我创建了一个抽象类 Foo 。现在我想要一个上述通用类的字符串实现。但是当我运行代码时我得到了一个 ClassCast 异常。
public abstract class Foo<T> {
abstract void add(T ... elements); //warning :Type safety: Potential heap pollution via varargs parameter elements
void addUnlessNull(T ... elements) //warning :Type safety: Potential heap pollution via varargs parameter elements
{
for(T element:elements)
{
if(element!=null)
add(element); // Warning:Type safety: A generic array of T is created for a varargs parameter
}
}
}
public class StringFoo extends Foo<String> {
private List<String> list=new ArrayList<>();
@Override
void add(String... elements) {
list.addAll(Arrays.asList(elements));
}
public static void main(String[] args)
{
StringFoo ss=new StringFoo();
ss.addUnlessNull("Hello","World"); //Class Cast Exception
}
}
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at StringFoo.add(StringFoo.java:1)
at Foo.addUnlessNull(Foo.java:10)
at StringFoo.main(StringFoo.java:19)
繁花如伊
相关分类