2013-02-11 103 views
0

我想要一个函数将类映射到类,例如int.class - > Integer。如何获得对应于原始类型的引用类型?

+1

你能给我们一个这个目的吗? – 2013-02-11 20:24:50

+0

当然 - 我正在使用反射来修复我从Jython调用的Java API。 API使用Java整型类型,就好像它们是无符号的,例如short的范围为0 - 65535.为此,我需要找到short.MAX_VALUE给定short,以此类推。 – fizzer 2013-02-11 21:20:07

+0

不知道为什么这个关闭。这个问题似乎毫不含糊,答案似乎是正确的。 – fizzer 2013-02-12 19:55:49

回答

4

这不是专门的香草JDK提供的,但如果你不想鞭打你自己的,Guava提供Primitives.wrap(Class),它接受原始类型并返回相应的包装类型。

+0

另外[ClassUtils.primitiveToWrapper(Class)](http://commons.apache.org/lang/api-release/org/apache/commons/lang3/ClassUtils.html #primitiveToWrapper(java.lang.Class))在Apache Commons Lang中也是如此 – Grim 2013-02-11 21:10:18

1

对于整数:

int.class or the equivalent: Integer.TYPE; 

同样为其它基元类型

double.class or Double.TYPE 
float.class or Float.TYPE 
char.class or Character.TYPE 
long.class or Long.TYPE 
boolean.class Boolean.TYPE 

如下使用它:

Class intClass = int.class; 

然后,这是表示基本类型int的类。

有了这些信息,您只需编写自己的映射:(您不想包括8行代码的外部LIB)

public Class getClassForPrimitiveType(Class clazz) { 
    if (clazz == int.class) return Integer.class; 
    if (clazz == float.class) return Float.class; 
    // TODO other primitives 
} 
+2

这将给出原始类型的类,即'int.class'不''Integer.class' – Alex 2013-02-11 20:30:59

+0

谢谢,更新 – AlexWien 2013-02-11 20:37:05

+1

而不是'Integer.Type',你也可以使用'int.class';对我来说这更清楚,并减少混合它的机会。 – Cephalopod 2013-02-11 20:38:30