Java不允许我们这样做的原因是什么
private T[] elements = new T[initialCapacity];
Run Code Online (Sandbox Code Playgroud)
我可以理解.NET不允许我们这样做,因为在.NET中你有值类型,在运行时可以有不同的大小,但在Java中,所有类型的T都将是对象引用,因此具有相同的大小(如我错了请纠正我).
是什么原因?
好吧,我一直在谷歌上网,我似乎无法找到任何问题的解决方案.我找到了很多解决方案,而不是任何合适的解决方案.
我需要创建一个泛型数组.但泛型类型本身扩展了Comparable.当我尝试以下内容时:
public class Hash<T extends Comparable<String>> {
private T[] hashTable;
private int tableSize;
Hash(int records, double load) {
tableSize = (int)(records / loadFactor);
tableSize = findNextPrime(tableSize);
hashTable = (T[])(new Object[tableSize]); //Error: Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是Object不能被强制转换为扩展Comparable的泛型.有没有解决的办法?