类型Class中的方法foo(T [])不适用于参数(Vector <Integer>)

时间:2019-08-14 09:22:45

标签: java generics

有人可以向我解释T[]是什么意思吗?什么可以接受,为什么?

public class Class {

   public static <T extends Comparable<T>> int[] foo(T[] s) {
      // ...
   }

   public static void main(String[] args) {

      int[] intArray1 = new int[10];
      int[] ris = foo(intArray1);  // nope

      Vector<Integer> intArray2 = new Vector<Integer>(10);
      int[] ris = foo(intArray2);  // nope

      Integer[] intArray3 = new Integer[10];
      int[] ris = foo(intArray3);  // ok

   }

}

1 个答案:

答案 0 :(得分:4)

T[]T的数组。就像String[]String的数组一样。

方法签名:public static <T extends Comparable<T>> int[] foo(T[] s)表示:

  • 该方法采用T的数组
  • T扩展了可比性
  • 该方法返回一个int[]

简而言之,这意味着:从数组中获取对象时,您知道可以对它们调用.compare(),并且它将以标准int格式返回Comparable