为了账号安全,请及时绑定邮箱和手机立即绑定

“var”和原始类型如何结合在一起?

“var”和原始类型如何结合在一起?

繁星淼淼 2021-06-02 18:23:51
我遇到了一个建议使用的答案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很方便。


查看完整回答
反对 回复 2021-06-30
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信