当方法参数类型为<! - 时,T的值是多少?在Java Generics中扩展T - >吗?

时间:2016-01-14 10:07:20

标签: java generics

我尝试了下面的代码并且很少与泛型混淆。您能否提供以下方法中代替'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

1 个答案:

答案 0 :(得分:0)

方法返回类型之前的<T>表示通用方法。

反过来,您可以在方法参数中引用T:您唯一的参数是类型等于Collection的{​​{1}}或扩展它(成语{ {1}}将上限定义为T并使用通配符)。

您在? extends T方法中传递给T方法的集合是getClass的通用集合,您可以在其中添加main,{{1}和Number(数字基元的对象包装器扩展Double)。

这些类型是通过Integer传递的实际值推断和加框的。

由于Long方法在运行时解析,因此您将打印特定类型的集合元素。

相关问题