public class CopyOutput {
private final java.util.Date date;
...
public java.util.Date getDate() {
return (java.util.Date)date.clone();
}
}
private final Map<Window,Extra> extras = new HashMap<>();
public void op(Window window) {
Extra extra = extras.get(window);
}
private final Map<Window,Extra> extras = new IdentityHashMap<>();
public void op(Window window) {
Extra extra = extras.get(window);
}
public class Window {
/* pp */
class PrivateKey {
Window getWindow() {
return Window.this;
}
}
final PrivateKey privateKey = new PrivateKey();
private final Map<Window.PrivateKey,Extra> extras =
new WeakHashMap<>();
...
}
public class WindowOps {
public void op(Window window) {
// Window.equals may be overridden,
// but safe as we don't use it.
Extra extra = extras.get(window.privateKey);
...
}
}
public final class WrappedState {
// private immutable object
private String state;
// wrapper method
public String getState() {
return state;
}
// wrapper method
public void setState(final String newState) {
this.state = requireValidation(newState);
}
private static String requireValidation(final String state) {
if (...) {
throw new IllegalArgumentException("...");
}
return state;
}
}
public class Files {
public static final String separator = "/";
public static final String pathSeparator = ":";
}
import static java.util.Arrays.asList;
import static java.util.Collections.unmodifiableList;
...
public static final List<String> names = unmodifiableList(asList(
"Fred", "Jim", "Sheila"
));
public static final List
<String> names =
List.of("Fred", "Jim", "Sheila");