首页 > 解决方案 > Class 类型中的方法 foo(T[]) 不适用于参数(Vector)

问题描述

有人可以解释一下这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

   }

}

标签: javagenerics

解决方案


T[]是一个Ts 的数组。就像 aString[]Strings 的数组一样。

方法签名:public static <T extends Comparable<T>> int[] foo(T[] s)意味着:

  • 该方法需要一个数组T
  • T 扩展可比
  • 该方法返回一个int[]

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


推荐阅读