java检测装箱类
有没有办法知道一个给定的类是否是一个包含基元类型的类,或者我是否必须创建一个像这样难看的方法:
public boolean isBoxingClass(Class clazz){
String simpleName=clazz.getSimpleName();
switch(simpleName){
case "Integer":
case "Long":
case "Boolean":
case "Double":
case "Float":
return true;
default :
return false;
}
}
编辑:
如果最终选择此解决方案:
public static final List<Class> BOXING_CLASSES= Arrays.asList(new Class[]{
Integer.class,
Long.class,
Short.class,
Boolean.class,
Double.class,
Float.class,
Character.class,
Void.class,
Byte.class});
public static boolean isBoxing(Class clazz){
return BOXING_CLASSES.contains(clazz);
}
# 1 楼答案
看看这个类是否实现了数字、字符或布尔值(我认为这是唯一的选项),怎么样
在这种情况下,对于BigDecimal和AtomicInteger,你也会得到true,不确定这是否是你想要的。但在任何情况下,都不需要通过getSimpleName()
# 2 楼答案
这是我能想到的最简单的方法。包装类仅存在于
java.lang
包中。除了包装类之外,java.lang
中没有其他类有名为TYPE
的变量。你可以用它来检查一个类是否是包装类