本帖最后由 sparic 于 2014-06-09 01:05:26 编辑

解决方案 »

  1.   

    举个非泛型的例子:
    Object[] x = new String[10];
    甚至
    Object[] y = new int[5][5];
    都可以,唯独下面的代码是错的
    Object[] z = new int[10];
    简单说,就是T[] 需要至少是个Object[],但是int[], long[] 基本类型数组不是Object[] 子类。具体到你的问题,最简单,而且也对今后更加方便的修改方式是
    public static <T> T getMiddle(T... a) {
      return a[a.length/2]
    }getMiddle(nums);
    getMiddle(1,2,3,4,5);参数传入的时候,会自动转成合适的数组
      

  2.   

    不好意思,更正下,getMiddle(nums); 只是编译通过,运行结果不对。
      

  3.   

    我一般不喜欢用泛型,除非是给别人做接口的情况下,否则更喜欢直接用Object类型解决一切问题。
      

  4.   

    Integer,泛型要用对象类型!不能用基本类型
      

  5.   

    感谢1楼2楼5楼,我换成Integer就没问题了!