[英]Java Generics: Question Type parameters inference in Java
我正在學習Java中的泛型概念。
在此特定行-> class User<T extends List<U>, U>
,是否存在一個原因,當第一個參數本身定義T<U>
時,java會在類參數定義中強制第二種類型的參數U
我想念的捷徑。
在main內部調用代碼:
User<List<Integer>, Integer> u = new User<>("some_user", 21, l);
System.out.println(u.getDetails());;
類:
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;
}
}
當您聲明類型參數T
具有上限List<U>
,您尚未定義類型參數U
,因此,如果沒有聲明U
則它尚未定義。
您可以按照自己的方式做-再次聲明U
:
class User<T extends List<U>, U> {
或者您可以先聲明(順序無關緊要):
class User<U, T extends List<U>> {
但是除非您確實需要List
的特定類型,否則我將刪除該類型參數,並專注於元素的類型。
class User<U> {
//...
private List<U> details;
public User(String name, int age, List<U> details) {
//...
}
}
(對於列表元素類型,您始終可以只使用T
而不是U
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.