我的课程如下: -
import java.util.*;
public class QueueTest<T>{
Queue<T> q = new LinkedList<T>();
int capacity;
public QueueTest(int capacity){
this.capacity = capacity;
}
**public <T> void put(T item) throws InterruptedException**{
while(q.size()== capacity){
System.out.println("Now Queue is full and i will wait");
wait();
}
q.add(item);
System.out.println("I added : "+item);
notify();
}
public T got() throws InterruptedException{
while(q.isEmpty()){
System.out.println("Now Queue is empty and i will wait ");
wait();
}
T item = q.remove();
System.out.println("I got : "+item);
notify();
return item;
}
}
方法声明 put()导致此错误?
QueueTest.java:17: error: no suitable method found for add(T#1)
q.add(item);
当我删除 T 时,该类编译时没有错误,但我不知道为什么???
答案 0 :(得分:3)
摆脱
中的T
public <T> void put(T item) throws InterruptedException{
^
如果你离开它,你就会声明一个不同的类型变量,它会影响你的类'变量T
。您可以将不同的类型绑定到此类型,因此编译器无法保证它与绑定到Queue
的类型相同。您似乎想要使用与类声明中相同的类型变量。