我有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)
答案 0 :(得分:1)
在您的代码中
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);
答案 1 :(得分:0)
SuperQueue<Integer> superq =
new SuperQueue<Integer>((Class<ConcurrentLinkedQueue<Integer>>)
(Class<?>)ConcurrentLinkedQueue.class);