Java 确保通用参数为';这不是原始的
我正在编写一些代码,希望有一个泛型参数,但它不能是原语有没有办法确保函数的泛型参数不是基元? 例如,如果我有以下函数检查参数是否为整数(使用Java 确保通用参数为';这不是原始的,java,generics,Java,Generics,我正在编写一些代码,希望有一个泛型参数,但它不能是原语有没有办法确保函数的泛型参数不是基元? 例如,如果我有以下函数检查参数是否为整数(使用integer,因为int没有.getClass()): 公共静态最终整数长度(E){ 整数i=0; 如果(e.getClass()==i.getClass()){ 抛出新的IllegalArgumentException(); } 返回0; } 如果我想继续使用每个原语,这个函数将非常长(没有双关语)。从本质上讲,我可以防止将基元对象传递到具有泛型参数的
integer
,因为int
没有.getClass()
):
公共静态最终整数长度(E){
整数i=0;
如果(e.getClass()==i.getClass()){
抛出新的IllegalArgumentException();
}
返回0;
}
如果我想继续使用每个原语,这个函数将非常长(没有双关语)。从本质上讲,我可以防止将基元对象传递到具有泛型参数的函数中吗?它从来都不是基元。如果传入一个原语,它将自动装箱到相应的包装类,例如int
->Integer
关于您的语句,int没有.getClass() 实际上,
int
确实有一个类:int.class
,但反射api主要使用它来表示方法参数类型或int
的返回类型,它从来不是一个原语。如果传入一个原语,它将自动装箱到相应的包装类,例如int
->Integer
关于您的语句,int没有.getClass()
实际上,
int
确实有一个类:int.class
,但反射api主要使用它来表示方法参数类型或int
的返回类型。除此之外:Integer
不是前置的!我知道。关键是不能将.getClass()
与int
一起使用。如何列出不需要的类类型,并检查传递的参数是否在这些类型中?@Ian,这样我就有了一个列表
,其中包含我不想要的每个类的实例。然后我将使用.getClass()
进行迭代?看起来是个聪明的方法。这是一种方法。。。然后您可以使用instanceof来检查。。。但是继承可能会有一些问题。。。请检查。旁白:整数
不是前置的!我知道。关键是不能将.getClass()
与int
一起使用。如何列出不需要的类类型,并检查传递的参数是否在这些类型中?@Ian,这样我就有了一个列表
,其中包含我不想要的每个类的实例。然后我将使用.getClass()
进行迭代?看起来是个聪明的方法。这是一种方法。。。然后您可以使用instanceof来检查。。。但是继承可能会有一些问题。。。请查收。
public static final <E> int len(E e) {
Integer i = 0;
if (e.getClass() == i.getClass()) {
throw new IllegalArgumentException();
}
return 0;
}