Java 对象定义 shorthand 还是快捷方式?

Java object definition shorthand or shortcuts?

有没有更快的方法来实例化 Java 中的对象,而不必重新键入 class?例如,看看这个实例化的大部头:

HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<Integer, ArrayList<ActivityRecord>>();

我喜欢 shorthand 符合以下内容的:

HashMap<Integer, ArrayList<ActivityRecord>> days = new();

或者,我也很乐意使用 Eclipse 快捷方式自动完成实例化以使用无参数构造函数。

如果您使用的是 Java 7 及更高版本,您可以使用 diamond operator:

HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<>();

此外,在声明变量时,最好尽可能使用接口而不是具体 类。所以上面的内容实际上是:

Map<Integer, List<ActivityRecord>> days = new HashMap<>();

如果您使用的是 Java 6,您可以使用 Google Guava:

Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();

如需进一步阅读,您可以查看 Type Inference documentation.

中有关 泛型 类 的类型推断和实例化部分

您应该 Java 7 diamond operator 因为您通常会针对界面进行编码,而不是对参考和实例使用相同的 class。

Map<Integer, ArrayList<ActivityRecord>> days = new HashMap<>();

如果您使用的是 Java 6(或更早版本),那么 Google Guava 会派上用场

Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();