2
現在有一個簡單的方法來做到這一點?假設我有一個可以是Long,Float,Integer,Byte等的對象,我如何從這個對象中獲得它的等價基元類(Class)?如何從Java中java.lang類型的對象中獲取等價基元類型?
的方法可被寫成這樣
Class<?> getEquivalentPrimitiveType(Object obj)
{
}
現在有一個簡單的方法來做到這一點?假設我有一個可以是Long,Float,Integer,Byte等的對象,我如何從這個對象中獲得它的等價基元類(Class)?如何從Java中java.lang類型的對象中獲取等價基元類型?
的方法可被寫成這樣
Class<?> getEquivalentPrimitiveType(Object obj)
{
}
對應的原語類型是Long.TYPE
:
public static final Class<Long> TYPE
的Class實例表示基本類型
long
。
如果你有一個「包裝」類的實例,可以通過反射得到相應的原始的,就像這樣:
static <T> Class<T> getPrimitive(Class<T> wrapper)
throws NoSuchFieldException, IllegalAccessException {
return (Class<T>)wrapper.getDeclaredField("TYPE").get(null);
}
這裏是一個。
很酷。這是我正在尋找的,thx。 – imgen 2013-03-15 09:36:46
重新思考之後,這其實不是我的意思。我想我必須從java.lang類型構建一個映射到內置類型。 請參閱編輯問題 – imgen 2013-03-15 09:41:51
@imgen您也可以通過訪問相應包裝類型的「TYPE」字段來反射。 – dasblinkenlight 2013-03-15 09:43:14