我正在编写一些代码,我想要一个通用参数,但它不能成为原语。 有没有办法确保函数的泛型参数不是原语?
例如,如果我有以下函数检查参数是否为整数(使用Integer
,因为int
没有.getClass()
)。:
public static final <E> int len(E e) {
Integer i = 0;
if (e.getClass() == i.getClass()) {
throw new IllegalArgumentException();
}
return 0;
}
如果我想继续使用每个原语,这个函数会很长(没有双关语)。本质上,我可以阻止原始对象传递给具有泛型参数的函数吗?
答案 0 :(得分:8)
从不原语。如果传入一个原语,它将被自动装箱到适当的包装类,例如int
- &gt; Integer
。
关于你的陈述 int没有.getClass() ...
实际上,int
确实有一个类:int.class
,但它主要由反射api用来表示方法参数类型或{{1}的返回类型}。