我刚刚在使用c ++大约一年后开始使用java。在c ++中,我可以轻松地将泛型类型T分配给另一个泛型类型T.这里的问题是在java类型中,T不能是基元,而且永远是对象。所以java说我不能将对象分配给T(泛型变量)。有没有办法可以将T转换回原语而不是对象,以便我可以将T分配给T?
上下文,如果有人需要它:我正在使用队列作为项目的私有成员(在大学)编写堆栈,所以对于Stack类的top()函数我唯一可以获得顶部的方法将队列出列(私有成员)。但是,与顶部一样,你实际上不能删除你刚刚读到的顶部,所以我复制队列然后将复制的队列出列。问题在于虽然dequeue返回泛型类型T java将其视为对象而不是泛型类型。
这是Queue类的dequeue()函数:
public T dequeue(){
return dataStructure.remove(0);
}
(其中dataStructure包含泛型类型T) 这是我的堆栈类的top()函数:
public T top(){
Queue temp = new Queue<T>(elements);
T element = temp.dequeue();
return element;
}
元素是私有队列成员