数组不能分配给通用引用
Array cannot be assigned to Generic Reference
public class Test {
class Genric<C extends Clazz> {
C[] s;
public Genric() {
this.s = new SubClazz[3];
}
}
class Clazz {
}
class SubClazz extends Clazz {
}
}
代码在 this.s = new SubClazz[3];
处给出错误,说 Type mismatch: cannot convert from Test.Clazz[] to C[]
。为什么会出现这个错误?如何解决这个问题?
因为如果 C
绑定到 SomeOtherSubClazz
,例如,你会做
SomeOtherSubClazz[] s = new SubClazz[3];
类似于:
Integer[] s = new Double[3]; // Integer and Double are both Numbers
这显然不是类型安全的。
如何解决这个显然取决于你想做什么。也许您可以按照此处建议的方法进行操作:How to create a generic array in Java?
public class Test {
class Genric<C extends Clazz> {
C[] s;
public Genric() {
this.s = new SubClazz[3];
}
}
class Clazz {
}
class SubClazz extends Clazz {
}
}
代码在 this.s = new SubClazz[3];
处给出错误,说 Type mismatch: cannot convert from Test.Clazz[] to C[]
。为什么会出现这个错误?如何解决这个问题?
因为如果 C
绑定到 SomeOtherSubClazz
,例如,你会做
SomeOtherSubClazz[] s = new SubClazz[3];
类似于:
Integer[] s = new Double[3]; // Integer and Double are both Numbers
这显然不是类型安全的。
如何解决这个显然取决于你想做什么。也许您可以按照此处建议的方法进行操作:How to create a generic array in Java?