我正在學(xué)習(xí) Java 中的泛型概念。在此特定行 -> 中class User<T extends List<U>, U>,U當(dāng)?shù)谝粋€(gè)參數(shù)本身定義時(shí),java 是否會(huì)強(qiáng)制在類(lèi)參數(shù)定義中使用第二個(gè)類(lèi)型參數(shù),T<U>或者是否有我缺少的快捷方式。在 main 中調(diào)用代碼: User<List<Integer>, Integer> u = new User<>("some_user", 21, l); System.out.println(u.getDetails());;班級(jí):class User<T extends List<U>, U> {private String name;private int age;private T details;public User(String name, int age, T details) { super(); this.name = name; this.age = age; this.details = details;}}
1 回答

POPMUISE
TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
當(dāng)你聲明類(lèi)型參數(shù)T有一個(gè)上限時(shí)List<U>,你還沒(méi)有定義類(lèi)型參數(shù)U,所以沒(méi)有聲明U它就沒(méi)有定義。
你可以像你所做的那樣做——聲明U第二個(gè):
class User<T extends List<U>, U> {
或者您可以先聲明它(順序無(wú)關(guān)緊要):
class User<U, T extends List<U>> {
但是除非您確實(shí)需要 的特定類(lèi)型,否則List我會(huì)刪除該類(lèi)型參數(shù)并專(zhuān)注于元素的類(lèi)型。
class User<U> {
//...
private List<U> details;
public User(String name, int age, List<U> details) {
//...
}
}
(您始終可以只使用T而不是U用于列表元素類(lèi)型。)
添加回答
舉報(bào)
0/150
提交
取消