代码之家  ›  专栏  ›  技术社区  ›  digiarnie

检查类是否具有关联的基元类型

  •  3
  • digiarnie  · 技术社区  · 15 年前

    有没有一种简单的方法可以检测像Integer或Long这样的类是否有关联的基元类型(e、 g.int和long)

    2 回复  |  直到 15 年前
        1
  •  3
  •   David Z    15 年前

    我所说的简单并不是指维护一个类集合并检查该类是否存在于该集合中。

    Set 并用它在O(1)时间内检查成员身份。我不确定哪条路更快。

    如果你问Java是否有一个内置的方法(在标准API中)来实现这一点,我不这么认为。但如果有一个,它可能只会检查7个元素的集合或数组中的成员身份。

        2
  •  0
  •   les2    15 年前

    是的,有一个

    public class ClassUtils {
        private static final Set<Class<?>> wrapperClasses = new HashSet<Class<?>>();
        static {
            wrapperClasses.add(Integer.class);
            ... there are a set number of wrapper classes - add them all here
        }
    

    然后,创建一个helper方法:

        public static boolean isWrapperForPrimitive(Class<?> klass) { 
            return wrapperClasses.contains(klass); 
        }
    }
    

    反过来很简单,Class.isPrimitive():

    这些对象只能通过以下公共静态final变量访问,并且是此方法返回true的唯一类对象。