Tag: 成语

Java中是否存在用于满足接口的空方法的习惯用法?

假设我有一个类Foo实现了一个接口,例如MouseListener 。 MouseListener接口由五个方法组成,但我只希望覆盖其中一个方法( mouseClicked() )。 是否有一种标准的,惯用的格式化其他方法的方法? 我倾向于写下以下内容: @Override public void mouseClicked(MouseEvent e) { // (…) <– actual code here } @Override public void mouseEntered(MouseEvent e) { // Do nothing. Exists to satisfy MouseListener interface. } @Override public void mouseExited(MouseEvent e) { // Do nothing. Exists to satisfy MouseListener interface. } @Override public void mousePressed(MouseEvent e) […]

初始化按需持有者成语线程安全,没有最终修饰符

我有一种预感,即使用持有者惯用语而不将持有者字段声明为final是不是线程安全的(由于Java中的不变性方式)。 有人可以证实这一点(希望有一些消息来源)吗? public class Something { private long answer = 1; private Something() { answer += 10; answer += 10; } public int getAnswer() { return answer; } private static class LazyHolder { // notice no final private static Something INSTANCE = new Something(); } public static Something getInstance() { return LazyHolder.INSTANCE; } } 编辑:我绝对想要源语句,而不仅仅是“它有效”的断言 […]

什么是惯用的Hamcrest模式断言迭代的每个元素匹配给定的匹配器?

检查以下代码段: assertThat( Arrays.asList(“1x”, “2x”, “3x”, “4z”), not(hasItem(not(endsWith(“x”)))) ); 这断言列表没有不以“x”结尾的元素。 当然,这是说明列表的所有元素都以“x”结尾的双重否定方式。 另请注意,该片段会引发: java.lang.AssertionError: Expected: not a collection containing not a string ending with “x” got: 这列出了整个列表,而不仅仅是不以“x”结尾的元素。 那么有一种惯用的方式: 断言每个元素以“x”结尾(没有双重否定) 在断言错误时,仅列出那些不以“x”结尾的元素