我正在尝试创建一个具有通用顶点和邻接列表的 Graph 类,并且在以下代码的第 10 行处收到通用数组创建错误。早些时候我在第 11 行遇到了同样的错误,但它通过强制转换解决了。但这个错误仍然存在。代码中有什么问题?
import java.util.HashSet;
public class Graph<T> {
private int numVertices;
private T[] vertex;
private HashSet<T>[] adjacent;
public Graph(int numVertices) {
this.numVertices = numVertices;
vertex = (T[]) new T[numVertices];
adjacent = (HashSet<T>[]) new HashSet[numVertices];
}
}
由于类型擦除,您无法在 java 中创建通用数组。
但是,您可以使用Array.newInstance(Class<T>, int) http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Array.html#newInstance%28java.lang.Class,%20int%29为您打造一款。您必须将返回的Object
to T[]
.
/e1
这仍然留下了获得一个的问题Class<T>
目的。最好的(我能想到的唯一方法)是在构造函数中使用另一个参数来获取类对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)