我可以在模板排序中使用简单类型吗?

时间:2014-11-15 10:46:11

标签: java sorting types

我现在正在学习排序,并且不明白。我的类型是使用Integer,Double等类,但不是类型int,short,long,double等。
我使用了public static <T extends Comparable<? super T>> void sexySort(T[] a)public static <T extends Number> void sexySort(T[] a)

P.S。我试过反思,但仍然没有工作 public static <T> int checkClass(T t){ String type = t.getClass().getCanonicalName(); if(type.equals("java.lang.Integer")){ return 0; } else if(type.equals("java.lang.Double")){ return 1; } return -1; //etc. }

2 个答案:

答案 0 :(得分:2)

要有效地使用Java泛型,必须考虑以下限制:

  • 无法使用原始类型实例化通用类型
  • 无法创建类型参数的实例
  • 无法声明类型为类型参数的静态字段
  • 无法使用具有参数化类型的强制转换或实例
  • 无法创建参数化类型的数组
  • 无法创建,捕获或抛出参数化类型的对象
  • 无法将每个重载的形式参数类型擦除为相同原始类型的方法重载

参考:see example in Java tutorials

答案 1 :(得分:1)

您不能将原始类型用作“模板”参数(Java中的参数化类型)。

JLS-4.5 Parameterized Types

  

如果C不是泛型类或接口的名称,或者类型参数列表中的类型参数数与C的类型参数数不同,则为编译时错误。

并在示例中明确指出

  

原始类型不能是类型参数。