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

我遇到了一个建议使用的答案

var list = new ArrayList();

我很惊讶在这里找到一个原始类型,我只是想知道:是否var使用<>“自动?

(同时,答案改为使用<String>,但我仍然对这里的“原则”感到好奇)

我看到了其他问题,例如this,但它们都使用菱形运算符:

var list = new ArrayList<>();

现在我只是想知道:是否var改变了我们应该(不)使用原始类型的方式?还是建议忽略<>简单的坏习惯?


繁星淼淼
浏览 152回答 2
2回答

慕婉清6462132

我遇到了一个建议使用的答案......我会忽略那个答案,因为正如您指出的那样,它使用原始类型并且它的类型list是特别的ArrayList。(更新:回答者编辑了他们的答案以添加元素类型。)相反:List<AppropriateElementType>&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList<>();根据您链接的第二个答案,如果包含,var&nbsp;将导致编译器从右侧推断元素类型<>,选择最具体的类型。在var list = new ArrayList<>();这将是ArrayList<Object>,虽然,因为它不会有什么更具体的可以选择。但是,这:var&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList();...没有<>, 使用的是原始类型 (&nbsp;ArrayList),而不是带有Object作为参数 (&nbsp;ArrayList<Object>)的参数化类型,这是不同的。如果list充分包含的使用(方法中的几行),则输入ArrayList<X>而不是List<X>可能是可以接受的(取决于您的编码风格),在这种情况下:var&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList<AppropriateElementType>();但通常我更喜欢对接口而不是具体类进行编码,即使是本地人也是如此。这就是说,与当地人,这是不是与实例成员那么重要,而且var很方便。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java