我尝试了下面的代码并且很少与泛型混淆。您能否提供以下方法中代替'T'的值的信息?
代码:
public class testT{
public static void main(String[] args){
List<Number> numbers1 = new ArrayList<>();
numbers1.add(5.4);
numbers1.add(2);
numbers1.add(44444444l);
getClass(numbers1);
}
static <T> void getClass(Collection<? extends T> collection) {
for(T c : collection) {
System.out.println(c.getClass().getName());
}
}
输出:
java.lang.Double
java.lang.Integer
java.lang.Long
答案 0 :(得分:0)
方法返回类型之前的<T>
表示通用方法。
反过来,您可以在方法参数中引用T
:您唯一的参数是类型等于Collection
的{{1}}或扩展它(成语{ {1}}将上限定义为T
并使用通配符)。
您在? extends T
方法中传递给T
方法的集合是getClass
的通用集合,您可以在其中添加main
,{{1}和Number
(数字基元的对象包装器扩展Double
)。
这些类型是通过Integer
传递的实际值推断和加框的。
由于Long
方法在运行时解析,因此您将打印特定类型的集合元素。