如何从Java中的java.lang类型的对象中获取等价原语类型?

时间:2013-03-15 09:33:24

标签: java

现在有一个简单的方法吗?假设我有一个可以是Long,Float,Integer,Byte等的Object,如何从这个对象中获得它的等价原始类(Class)?

可以像这样编写一个方法

Class<?> getEquivalentPrimitiveType(Object obj)
{
}

1 个答案:

答案 0 :(得分:5)

相应的基元类型为Long.TYPE

  

public static final Class<Long> TYPE

     

表示基本类型long的类实例。

如果你有一个“包装器”类的实例,你可以通过反射获得相应的原语,如下所示:

static <T> Class<T> getPrimitive(Class<T> wrapper)
    throws NoSuchFieldException, IllegalAccessException {
    return (Class<T>)wrapper.getDeclaredField("TYPE").get(null);
}

这是demo on ideone