我正在用Java編寫一個通用鏈接列表,並且除了一個問題外,其他所有工作都正常。將泛型返回類型與Java中的類似泛型變量進行比較
列表節點包含E類型的變量「數據」,並且在通用鏈接列表代碼中我也有一個類型爲E的變量「tempData」。數據類型E將由程序使用鏈接列表確定。
我想要做的是通過調用節點函數getData()從鏈接節點「data」中檢索變量並將其存儲在名爲tempData的變量中。
下面是當前的代碼:
tempData = firstNode.getData();
我的問題是,當編譯我得到的錯誤,說他們是「不兼容的類型」。我知道在運行時它們將是相同的數據類型,但是如何滿足它編譯的語法?
我試圖把代碼:
if(firstNode.getData() instanceof tempData.getClass())
但它並沒有爲所在班級應該是沒有方法允許被稱爲工作。我也嘗試了以下工作,但仍然收到原始編譯錯誤。
if((firstNode.getData()).getClass == tempData.getClass())
任何和所有幫助非常感謝,謝謝。
編輯3-28-13
tempData的聲明是「E tempData;」
firstNode的聲明是「private ListNode firstNode;」
firstNode中的數據聲明是「private E data;」它是由.getData()獲得的;
標題爲LinkedList類「公共LinkedList類E」
報頭爲:ListNode類「公共類ListNode E」
兩個ES在頭具有比周圍符號小於和更大的,他們只是發佈時沒有顯示。
你可以添加到您的問題tempData和firstNode的聲明?會讓我更容易看到我懷疑的問題。 – Jules
@Jules E tempData; 並在firstNode(和所有節點)私有E數據;這是由.getData()返回的。 – FreakyDan
firstNode本身和它的getData()方法是如何聲明的? – Jules