2

有没有一种更快的方法来实例化 Java 中的对象,而不必重新键入类?例如,看看这本实例化的著作:

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

我喜欢这样的速记:

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

或者,我也会对自动完成实例化以使用无参数构造函数的 Eclipse 快捷方式感到满意。

4

3 回答 3

8

如果您使用的是 Java 7 及更高版本,则可以使用菱形运算符

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();

如需进一步阅读,您可以查看类型推断文档中的类型推断和泛型类实例化部分

于 2015-03-18T14:16:25.150 回答
2

您应该使用 Java 7菱形运算符,因为您通常会为接口编码,而不是为引用和实例使用相同的类。

Map<Integer, ArrayList<ActivityRecord>> days = new HashMap<>();
于 2015-03-18T14:18:23.877 回答
2

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

Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();
于 2015-03-18T15:21:14.083 回答