确保通用参数不是基元

时间:2016-03-08 05:48:27

标签: java generics

我正在编写一些代码,我想要一个通用参数,但它不能成为原语。 有没有办法确保函数的泛型参数不是原语?

例如,如果我有以下函数检查参数是否为整数(使用Integer,因为int没有.getClass())。:

public static final <E> int len(E e) {
    Integer i = 0;
    if (e.getClass() == i.getClass()) {
        throw new IllegalArgumentException();
    }
    return 0;
}

如果我想继续使用每个原语,这个函数会很长(没有双关语)。本质上,我可以阻止原始对象传递给具有泛型参数的函数吗?

1 个答案:

答案 0 :(得分:8)

从不原语。如果传入一个原语,它将被自动装箱到适当的包装类,例如int - &gt; Integer

关于你的陈述 int没有.getClass() ...

实际上,int 确实有一个类:int.class,但它主要由反射api用来表示方法参数类型或{{1}的返回类型}。