![](/img/trans.png)
[英]How to avoid generics warnings when using “raw types” as static field / return type?
[英]Eclipse IDE warnings about Raw types when using Generics
我看不出为什么Eclipse在代码行下面会在生成行m1()中创建新的ArrayList的代码下方产生黄色的波浪线(警告)。 当我仍然无法将非String对象添加到Collection c时,IDE为什么要在新的ArrayList旁边紧跟<>? 在执行时,它们也会被类型擦除,因此试图了解它是否真的意味着什么。
import java.util.ArrayList;
import java.util.Collection;
public class Main {
public static void main(String[] args) {
m1();
}
private static Collection<String> m1() {
Collection<String> c = new ArrayList();//gives typesafety warning for missing <>
c.add("A");
c.add("B");
c.add(1); // does not let me add a non-String type anyways
return c;
}
}
警告是给new ArrayList();
,因为您要创建没有泛型的ArrayList
对象。 即使您为引用变量提供了泛型,在某些情况下您也可以添加String类对象以外的对象。 喜欢:
您正在创建类似: Collection<String> c = new ArrayList();
。 由于引用具有泛型类型,因此String
编译器将仅检查引用,并且不允许使用除string以外的任何内容。 但以防万一:
Collection<Integer> intColl = (Collection)c;
在这种情况下,您甚至可以在集合中添加整数。 这就是为什么它发出警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.