如何从java中java.lang类型的对象中获取等价基元类型?

如何从java中java.lang类型的对象中获取等价基元类型?,java,Java,现在有没有一个简单的方法来做到这一点?假设我有一个对象可以是Long、Float、Integer、Byte等等,我如何从这个对象中获得它的等价原语类(class) 可以这样编写一个方法 Class<?> getEquivalentPrimitiveType(Object obj) { } Class getEquivalentPrimitiveType(对象obj) { } 对应的原语类型为: 公共静态最终类类型 表示基元类型long的类实例 如果您有一个“包装器”类的实例,则可以

现在有没有一个简单的方法来做到这一点?假设我有一个对象可以是Long、Float、Integer、Byte等等,我如何从这个对象中获得它的等价原语类(class)

可以这样编写一个方法

Class<?> getEquivalentPrimitiveType(Object obj)
{
}
Class getEquivalentPrimitiveType(对象obj)
{
}

对应的原语类型为:

公共静态最终类类型

表示基元类型
long
的类实例

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

static <T> Class<T> getPrimitive(Class<T> wrapper)
    throws NoSuchFieldException, IllegalAccessException {
    return (Class<T>)wrapper.getDeclaredField("TYPE").get(null);
}
静态类getPrimitive(类包装器)
抛出NoSuchFieldException、IllegalAccessException{
return(Class)wrapper.getDeclaredField(“TYPE”).get(null);
}

这是一个。

经过重新思考,这其实不是我的意思。我想我必须构建一个从java.lang类型到内置类型的映射。请参见编辑的question@imgen您还可以通过访问相应包装器类型的
TYPE
字段来通过反射获得它。作为参考,您可以在那里看到: