gpt4 book ai didi

java - 泛型类和静态泛型方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:47 26 4
gpt4 key购买 nike

我在写泛型类

public class SomeClass<T> {

public static <T extends Comparable<? super T>> T min(Collection<? extends T> c) {
T min = c.iterator().next();
for (T element : c)
if (element.compareTo(min) < 0)
min = element;
return min;
}

}

public class Main {

public static void main(String[] args) {
SomeClass<Integer>.min(Arrays.asList(1, 2, 3)); // compile-time error
SomeClass.min(Arrays.asList(1, 2, 3)); // ok
}

}

在通用类中 SomeClass和通用方法 SomeMethod类型参数 T是相同还是不同?

为什么我们在字符串 SomeClass<Integer>.min(Arrays.asList(1,2,3)); 上有编译时错误?

最佳答案

类声明

public class SomeClass<T> 

定义了一个泛型类,其中 <T>指定类型参数(也称为类型变量)。这引入了类型变量,T , 可以在类内的任何地方使用。

和方法声明:

public static <T extends Comparable<? super T>> T min(Collection<? extends T> c) {
...
}

定义一个 generic method .泛型方法是引入自己的类型参数的方法。这类似于声明泛型类型,但类型参数的范围仅限于声明它的方法。

现在如果你想调用泛型方法min ,你需要调用:

SomeClass.<Integer>min(Arrays.asList(1,2,3));

关于java - 泛型类和静态泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19635085/

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