什么是静态<T> List<T> 方法名称(List<? super T> 输入)

2022-09-03 03:32:58

我有以下代码,但我对所有泛型感到困惑。

public static <T> List<T> backwards (List<? super T> input) {  
       List<T> output = new ArrayList<T>();  
       return output;  
}

我的理解是,我有一个名为公共方法,它创建一个实现List接口并返回数组列表的数组列表。我的问题是,实际上我对编译器说了以下部分......backwards

static <T> List<T> backwards (List<? super T> input)

答案 1

你对编译器说:

<T>

“我正在为此方法声明任意类型,对于该方法的每次调用,它可以是任何内容(非原始)。T

List<T>

“此方法将返回该类型的包含元素。ListT

List<? super T> input

“此方法将采用一个名为 的参数,该参数是 类型的包含元素,或任何超类型的 。例如,如果 是 ,则可能是 、 或 。”inputListTTTIntegerinputList<Integer>List<Number>List<Object>


答案 2

除了Paul的答案之外,这可能使它更清楚,如果你有一些类在其定义中声明泛型参数,你可以编写泛型方法,如

public class SampleClass<T>{
  public static List<T> backwards (List<? super T> input)
}

否则,如果您的类不声明泛型参数(或者您想要定义额外的参数),则应按以下方式定义方法:

public class SampleClass{
    public static <T> List<T> backwards (List<? super T> input){...}
}

推荐