首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java泛型: Java中的问题类型参数推断

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

Stack Overflow用户
提问于 2018-10-23 08:57:38
回答 1查看 48关注 0票数 1

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

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-23 09:02:08

当您声明类型参数T有一个上限List<U>时,您还没有定义类型参数U,所以如果没有声明U,就不会定义它。

您可以像您所做的那样--声明U second:

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) {
        //...
    }
}

(对于list元素类型,您始终可以使用T而不是U。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52939647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档