我想用迭代器實現一個自定義列表,以更好地理解它自己,但是我遇到了一個泛型類型的問題,我第一次使用自己。 這是我的課的重要組成部分如何檢查在Iterator中投射到T是否安全?
public class MyList<T> implements Iterable<T>
{
// Unrelated code
@Override
public Iterator<T> iterator()
{
return new Iterator<T>()
{
private Node position = firstNode;
public boolean hasNext()
{
return position.getNext() != null;
}
public T next()
{
String current = "";
if (this.hasNext())
{
current = position.getData();
position = position.getNext();
}
return (T) current;
這裏Eclipse中說,這是一個未經檢查的演員,所以我試圖將其更改爲:
return (T) (current instanceof T?current:null);
但隨後的Eclipse提供了一個錯誤:「無法執行instanceof檢查類型參數T.使用它的擦除對象,因爲進一步的通用類型信息將被刪除在運行時「
我該如何擺脫警告,而不使用@SupressWarnings?
}
public void remove()
{
throw new UnsupportedOperationException("Not supported yet.");
}
};
}
//unrelated code
}
爲什麼使它通用,如果它總是將是String類型的? –
您無法安全地將字符串轉換爲T!您可能需要'節點',獲得者返回一個'T' –
您有什麼反對使用@SuppressWarnings?這就是它的*。* – EJP