java - 检测拳击课

标签 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);
}

最佳答案

这是我能想到的最简单的方法。包装类仅存在于 java.lang 包中。除了包装类之外,java.lang 中的其他类都没有名为TYPE 的变量。你可以用它来检查一个类是否是 Wrapper 类。

public static boolean isBoxingClass(Class<?> clazz)
{
    String pack = clazz.getPackage().getName();
    if(!"java.lang".equals(pack)) 
        return false;
    try 
    {
        clazz.getField("TYPE");
    } 
    catch (NoSuchFieldException e) 
    {
        return false;
    }           
    return true;        
}

关于java - 检测拳击课,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16776647/

相关文章:

java - 如何在另一个java程序中运行java程序

java - 如何通过条件检查 SQLite 表中是否存在行

java - JPA/Hibernate - 将枚举保留为常量表

java - OXM:映射变量元素名称

java - 使用 RSA key 的 Diffie Hellman key 协议(protocol)?

java - Jboss 7.2 和 Java 8

java - 如何使用热键关闭selenium中的浏览器?

java - 如何重写这3个方法以使其可重用?

java - 在java中读取大txt文件时使用线程?

java - 在 Java 中使用多维动态数组