sli*_*mbo 0 java standards warnings conventions arraylist
我过去一直在使用矢量,我对它们非常熟悉.我听说ArrayLists更快更灵活.我是使用ArrayLists和Java Generics的新手.我目前正在使用它们如下并接收有关参数化的警告(我认为我通过声明它们来做到了这一点<String>.
ArrayList<String> arrayList = new ArrayList <String> ();
...
//then within a method
arrayList.add(file.getName()); //<-This line triggers the warning.
Run Code Online (Sandbox Code Playgroud)
我在网上发现,可以通过抑制方法中的警告来避免这种情况,如下所示.但是,这是一个解决方法,我宁愿了解arraylists如何正常工作和使用它们,而不是禁止警告错误地使用它们.
@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)
并且,如果有关于使用ArrayLists的某种约定或标准,我也很想了解这些.
编辑: 我收到的警告如下:类型安全:方法add(Object)属于原始类型ArrayList.应该参数化对泛型类型ArrayList的引用
首先,通过接口名称引用您的列表(作为变量,返回类型或参数类型),以便:
List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
将代码绑定到特定实现是不好的形式.
向量没有任何内在错误.它们基本上是ArrayLists,其中所有方法都是同步的.这可能会产生不必要的开销,但不会过度.
至于抑制未经检查的警告,只有在您引用没有泛型参数的List时才应该这样做.例如:
List list = new ArrayList<String>();
list.add("boo");
Run Code Online (Sandbox Code Playgroud)
因此,只要将List用作返回类型,变量类型或参数类型,就始终包含适当的泛型类型.
某些库可能不会为您提供该选项,但这些应该是您需要禁止未经检查的警告的唯一情况.