Eclipse - 为什么推断Java的数组的通用建议

use*_*900 7 java eclipse arrays generics

您无法创建参数化类型的数组,因此Eclipse中的此代码

ArrayList<Integer>[] list = new ArrayList[1];
Run Code Online (Sandbox Code Playgroud)

无法参数化,但Eclipse显示警告

类型安全:类型的表达式ArrayList[]需要未经检查的转换才能符合ArrayList<Integer>[]

并且还显示建议推断通用类型参数,它在提交时不执行任何操作.

推断通用类型参数在识别出可以进行此替换的所有位置之后,通过参数化类型替换泛型类型的原始类型.

这个建议应该删除还是我遗失了什么?

new*_*cct 1

是的,该建议应该被删除。这里不可能用参数化类型替换原始类型,因为数组创建表达式必须使用可具体化类型作为组件类型。这样做是违法的new ArrayList<Integer>[1]。您只能执行new ArrayList[1]new ArrayList<?>[1],这两者都会产生警告以便转换为类型ArrayList<Integer>[](第二个将需要显式强制转换,从而产生未经检查的强制转换警告)。