要创建通用数组,我也在许多网站(包括这个网站)中看到了以下建议。但是,我想知道为什么我们在数组创建中不直接使用泛型类。是什么原因促使我们不使用下面的数组创建方法?
目前使用什么
public class X<T> {
private Y<T> tTypeClass = null;
public T[] Array() {
T[] array = (T[]) Array.newInstance(tTypeClass.getObject().getClass(),4);
}
}
为什么我们不使用
public class X<T> {
public T[] arrayCreation() {
T[] array = (T[]) Array.newInstance(this.getClass(),4);
}
}
最佳答案
您不能编写像 T[] arr = new T[xx]
这样的代码,因为 Java 泛型是类型删除的。运行时在运行时不知道 T
是什么,因为 Java 编译器在编译时用强制类型转换替换了所有泛型。
另外,
public class X<T> {
public T[] arrayCreation() {
T[] array = (T[]) Array.newInstance(this.getClass(),4);
}
}
将导致 ClassCastException,因为它创建一个 X[]
数组并尝试将其转换为 T[]
。
关于java - 通过自己的类创建通用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011572/