为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2021-12-01 19:29:51
我正在学习 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用于列表元素类型。)


查看完整回答
反对 回复 2021-12-01
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信