2013-02-11 136 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