Java对象定义的简写还是快捷方式?

时间:2015-03-18 14:15:13

标签: java eclipse guava diamond-operator

是否有更快的方法在Java中实例化对象,而不必重新键入类?例如,看看这个实例化的大部分:

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

我喜欢这样的简写:

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

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

3 个答案:

答案 0 :(得分:8)

如果您使用的是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类型推断和通用类实例化部分。

答案 1 :(得分:2)

您应该使用Java 7 diamond operator,因为通常您将编写接口并且不使用相同的类作为参考和实例。

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

答案 2 :(得分:2)

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

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