Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确保通用参数为';这不是原始的_Java_Generics - Fatal编程技术网

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;
}