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

Java对象定义速记还是快捷方式?,java,eclipse,guava,diamond-operator,Java,Eclipse,Guava,Diamond Operator,有没有一种更快的方法可以在Java中实例化对象,而不必重新键入类?例如,请看以下例示: HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<Integer, ArrayList<ActivityRecord>>(); HashMap days=newhashmap(); 我想要一个大致如下的速记: HashMap<Integer, ArrayList<Acti

有没有一种更快的方法可以在Java中实例化对象,而不必重新键入类?例如,请看以下例示:

HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<Integer, ArrayList<ActivityRecord>>();
HashMap days=newhashmap();
我想要一个大致如下的速记:

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

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

如果您使用的是Java 7及以上版本,则可以使用:

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

Map<Integer, ArrayList<ActivityRecord>> days = new HashMap<>();
Map days=newhashmap();
如果您使用的是Java 6(或更早版本),那么谷歌番石榴就派上了用场

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

通常,您会将变量类型声明为
接口
类型,但会使用实际类实例化它,例如
Map=new HashMap()。所以等式的右边需要实例化类。@pbabcdefp确实更新了我的评论。喜欢谷歌番石榴提示!(我必须将其保存在J6中,因此它工作得很好)
Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();
Map<Integer, ArrayList<ActivityRecord>> days = new HashMap<>();
Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();