我有SuperQueue类

public class SuperQueue<E> implements Queue<E>{

SuperQueue(Class<? extends Queue<E>> subqClass) {}

}


如何创建SuperQueue对象?我努力了:

SuperQueue<Integer> superq = new SuperQueue<Integer> (ConcurrentLinkedQueue.class)




SuperQueue<Integer> superq = new SuperQueue<Integer> (ConcurrentLinkedQueue<Integer>.class)

最佳答案

在你的代码中

SuperQueue<Integer> superq = new SuperQueue<Integer>(ConcurrentLinkedQueue.class);


您正在传递不兼容的类型,因为Class<ConcurrentLinkedQueue>无法转换为Class<? extends Queue<Integer>

为了创建对象,您需要传递一个实现Queue<Integer>的类,例如

class Foo implements Queue<Integer> {...}


然后你可以像这样使用它

SuperQueue<Integer> superq = new SuperQueue<Integer>(Foo.class);

09-25 15:32