我遇到了一个建议使用的答案var list = new ArrayList();我很惊讶在这里找到一个原始类型,我只是想知道:是否var使用<>“自动?(同时,答案改为使用<String>,但我仍然对这里的“原则”感到好奇)我看到了其他问题,例如this,但它们都使用菱形运算符:var list = new ArrayList<>();现在我只是想知道:是否var改变了我们应该(不)使用原始类型的方式?还是建议忽略<>简单的坏习惯?
2 回答
慕婉清6462132
TA贡献1804条经验 获得超2个赞
我遇到了一个建议使用的答案......
我会忽略那个答案,因为正如您指出的那样,它使用原始类型并且它的类型list
是特别的ArrayList
。(更新:回答者编辑了他们的答案以添加元素类型。)相反:
List<AppropriateElementType> list = new ArrayList<>();
根据您链接的第二个答案,如果包含,var
将导致编译器从右侧推断元素类型<>
,选择最具体的类型。在var list = new ArrayList<>();
这将是ArrayList<Object>
,虽然,因为它不会有什么更具体的可以选择。
但是,这:
var list = new ArrayList();
...没有<>
, 使用的是原始类型 ( ArrayList
),而不是带有Object
作为参数 ( ArrayList<Object>
)的参数化类型,这是不同的。
如果list
充分包含的使用(方法中的几行),则输入ArrayList<X>
而不是List<X>
可能是可以接受的(取决于您的编码风格),在这种情况下:
var list = new ArrayList<AppropriateElementType>();
但通常我更喜欢对接口而不是具体类进行编码,即使是本地人也是如此。这就是说,与当地人,这是不是与实例成员那么重要,而且var
很方便。
添加回答
举报
0/150
提交
取消