是否有更快的方法在Java中实例化对象,而不必重新键入类?例如,看看这个实例化的大部分:
HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<Integer, ArrayList<ActivityRecord>>();
我喜欢这样的简写:
HashMap<Integer, ArrayList<ActivityRecord>> days = new();
或者,我也对Eclipse自动完成实例化以使用无参数构造函数的快捷方式感到满意。
答案 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();