可比公司数组,如何打印价值?

时间:2015-03-23 03:41:16

标签: java comparable

长话短说,玩弄仿制品和可比对象,无法直接打印出值。这是一个简单的例子

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.Comparable;无法转换为[Ljava.lang.Integer;

实时代码示例:http://ideone.com/JPfUZw

1 个答案:

答案 0 :(得分:0)

KeyComparable,反之亦然。此外,您无法使用向下转换来初始化泛型数组。

修复代码:

private Key[] keys = (Key[]) new Comparable[10];

private Comparable[] keys = new Comparable[10];

这将有效,因为KeyComparable,您可以将Comparable存储在keys数组中,因此Key可以存储在那里。< / p>

或者传递泛型as的类并使用如图所示的Array.newInstance here

Key[] keys;

public Ideone(Class<Key> clazz, int size) {
    keys = (Key[]) Array.newInstance(clazz, size);
}