gpt4 book ai didi

Java 泛型 : Question Type parameters inference in Java

转载 作者:行者123 更新时间:2023-11-29 08:26:07 25 4
gpt4 key购买 nike

我正在学习 Java 中的泛型概念。

在这一行中 -> class User<T extends List<U>, U> ,java强制使用第二种类型参数U是有原因的吗?在类参数定义中,当第一个参数本身定义 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;
}

}

最佳答案

当您声明类型参数时 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。)

关于Java 泛型 : Question Type parameters inference in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com