我正在学习 Java 中的泛型概念。在此特定行 -> 中class User<T extends List<U>, U>,U当第一个参数本身定义时,java 是否会强制在类参数定义中使用第二个类型参数,T<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;}}
1 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
当你声明类型参数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用于列表元素类型。)
添加回答
举报
0/150
提交
取消