Java中的通用數(shù)組好吧,我一直在谷歌上網(wǎng),我似乎無法找到任何問題的解決方案。我找到了很多解決方案,而不是任何合適的解決方案。我需要創(chuàng)建一個泛型數(shù)組。但泛型類型本身擴(kuò)展了Comparable。當(dāng)我嘗試以下內(nèi)容時:public class Hash<T extends Comparable<String>> {
private T[] hashTable;
private int tableSize;
Hash(int records, double load) {
tableSize = (int)(records / loadFactor);
tableSize = findNextPrime(tableSize);
hashTable = (T[])(new Object[tableSize]); //Error: Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
}}問題是Object不能被強(qiáng)制轉(zhuǎn)換為擴(kuò)展Comparable的泛型。有沒有解決的辦法?
3 回答

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個贊
這里的其他答案通常都提倡更好的方法(特別是建議使用ArrayList),但在這個特定情況下的一個簡單答案可能是:
hashTable = (T[])(new Comparable[tableSize]);
(即創(chuàng)建一個類型為raw Comparable而不是Object的數(shù)組)
如果你在Hash對象中正確封裝了對這個數(shù)組的所有訪問權(quán)限,這應(yīng)該有效,但是(正如其他答案所解釋的那樣)你可能會讓自己變得脆弱。

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
你正在嘗試的演員
(T[])(new Object[tableSize]);
失敗,因?yàn)閿?shù)組中的項是Object的實(shí)例。對象沒有擴(kuò)展Comparable<String>
,因此強(qiáng)制轉(zhuǎn)換(T [])失敗,因?yàn)門定義為:
T extends Comparable<String>
要解決此問題:
實(shí)例化數(shù)組,使其項目是某些確實(shí)擴(kuò)展的類的實(shí)例
Comparable<String>
改變
hashTable
從數(shù)組(這不是一個通用型),到一個通用的集合類型,例如List<T> hashTable = new ArrayList<T>(tableSize>)
添加回答
舉報
0/150
提交
取消