5 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
你說的情況就不能運(yùn)用重載,只能寫在一個(gè)方法里面。
我寫個(gè)偽代碼提供個(gè)思路,你看合不合適
public static String getJsonArray(List<Object> list) {
if(list.size()==0)
return "";
else
for (Object object : list) {
if(object instanceof User)
.......
return "";
else if(object instanceof Organization)
.......
return "";
}
}

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
類型擦除。也就是在編譯后,List<Organization>和List<User>都會(huì)被List<Object>。所以泛型不能作為方法重載的區(qū)分標(biāo)識(shí)。

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
你這個(gè)不符合重載的條件,泛型不是很好能解決這個(gè)問題么?
public static String getJsonArray(List<T> list) {
return "";
}

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
這種我覺得你應(yīng)該自定義類類型來弄然后直接就是
public static String getJsonArray(Organization list) {
return "";
}
public static String getJsonArray(User list) {
return "";
}
然后具體的原本類你最好提供一個(gè)getData()的接口返回一個(gè)List類型的數(shù)據(jù)

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
我覺得最簡單的就是用泛型來做啊,雖然有類型擦除,但是你完全可以把方法的參數(shù)就用List<T>這個(gè)類型,
<T> String getJsonArray(List<T> list) {方法體}
這樣調(diào)用的時(shí)候直接用類似
List<XXXX> list = new ...();
getJsonArray(list);
這樣的調(diào)用就可以了啊
添加回答
舉報(bào)