[英]Checking if a class has an associated primitive type
有没有一种简单的方法可以检测诸如Integer或Long之类的类是否具有关联的基元类型? (例如分别为int和long)
简单来说,我并不是说维护一个Classes集合并检查该类是否存在于集合中。
简单来说,我并不是说维护一个Classes集合并检查该类是否存在于集合中。
但这很容易。 Java有固定数量的原始类型(7,如果我还记得它们的话),每个类型都只对应一个类。 检查7个元素数组的成员资格非常快速和容易,或者您可以将它们放入Set
并使用它来检查O(1)时间内的成员资格。 我不确定哪种方式会更快。
如果您要问Java是否有内置方法(在标准API中)来执行此操作,我不这么认为。 但如果有一个,它可能只是检查该集合或7个元素的数组的成员资格。
是的,有一个简单的方法:
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
}
然后,创建一个辅助方法:
public static boolean isWrapperForPrimitive(Class<?> klass) {
return wrapperClasses.contains(klass);
}
}
反过来很容易,Class.isPrimitive():
确定指定的Class对象是否表示基本类型。
有九个预定义的Class对象来表示八种基本类型和void。 它们由Java虚拟机创建,并且与它们表示的基本类型具有相同的名称,即boolean,byte,char,short,int,long,float和double。
这些对象只能通过以下公共静态final变量访问,并且是此方法返回true的唯一Class对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.