我正在寻求对基于价值的类的定义的一些澄清.我无法想象,最后一个要点(6)应该如何与第一个一起工作
Optional
就是这样一堂课.
Optional a = Optional.of(new ArrayList<String>());
Optional b = Optional.of(new ArrayList<String>());
assertEquals(a, b); // passes as `equals` delegated to the lists
b.get().add("a");
// now bite the last bullet
assertTrue(a.get().isEmpty()); // passes
assertTrue(b.get().isEmpty()); // throws
Run Code Online (Sandbox Code Playgroud)
我读错了,还是需要更准确?
伊兰的答案是有道理的(他们不再平等),但让我移动目标:
...
assertEquals(a, b); // now, they are still equal
assertEquals(m(a, b), m(a, a)); // this will throw
assertEquals(a, b); // now, they are equal, too
Run Code Online (Sandbox Code Playgroud)
让我们定义一个有趣的方法m
,它会做一些变异并再次撤消它:
int …
Run Code Online (Sandbox Code Playgroud)