猿问

Java泛型:Java中的问题类型参数推断

我正在学习 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;

}


}


ITMISS
浏览 143回答 1
1回答

POPMUISE

当你声明类型参数T有一个上限时List<U>,你还没有定义类型参数U,所以没有声明U它就没有定义。你可以像你所做的那样做——声明U第二个:class User<T extends List<U>, U> {或者您可以先声明它(顺序无关紧要):class User<U, T extends List<U>> {但是除非您确实需要 的特定类型,否则List我会删除该类型参数并专注于元素的类型。class User<U> {&nbsp; &nbsp; //...&nbsp; &nbsp; private List<U> details;&nbsp; &nbsp; public User(String name, int age, List<U> details) {&nbsp; &nbsp; &nbsp; &nbsp; //...&nbsp; &nbsp; }}(您始终可以只使用T而不是U用于列表元素类型。)
随时随地看视频慕课网APP

相关分类

Java
我要回答