有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

eclipse Java对象定义速记还是快捷方式?

有没有一种更快的方法可以在Java中实例化不需要重新键入类的对象?例如,看看这本实例化的大部头:

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

我想要一个大致如下的速记:

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

另外,我也很乐意使用一个Eclipse快捷方式来自动完成实例化,以使用无参数构造函数


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    如果你使用的是Java6(或更早版本),那么谷歌番石榴就派上用场了

    Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();
    
  3. # 3 楼答案

    您应该使用Java 7 diamond operator,因为您通常会对接口进行编码,而不是对引用和实例使用同一个类

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