java可比数组,如何打印值?
长话短说,玩弄泛型和可比性,无法直接打印出值。这里有一个简单的例子
class Ideone<Key extends Comparable<Key>>
{
private Key[] keys = (Key[]) new Comparable[10];
public static void main (String[] args) throws java.lang.Exception
{
Ideone<Integer> test = new Ideone();
test.keys[0] = 3;
System.out.println(test.keys[0]);
}
}
我得到的错误是:
线程“main”java中出现异常。lang.ClassCastException:[Ljava.lang.Compariable;不能强制转换为[Ljava.lang.Integer
实时代码示例:http://ideone.com/JPfUZw
# 1 楼答案
A
Key
是AComparable
,反之亦然。此外,不能使用向下转换初始化泛型数组在此处修复代码:
到
这将起作用,因为
Key
是一个Comparable
,您可以将Comparable
存储在keys
数组中,因此Key
可以存储在那里或者将泛型的类作为参数传递并使用数组。newInstance,如图here: