Java:转换原始类

Max*_*Max 17 java reflection casting class

Java中有一个简单的方法可以将原始类对象转换为对象类对象吗?给定类Class cl,我想将它转换为没有原语的Class.例如.

Class<?> cl = int.class;

...
if (cl.isPrimitive()) {
  cl = Object of primitive
}
...
Run Code Online (Sandbox Code Playgroud)

cl == Integer.class

我想要一个为所有原始类型执行此操作的方法.显然我可以遍历所有原始类型,但我认为有人可能知道更好的解决方案.

干杯,马克斯

And*_*s_D 22

希望我理解得对.基本上,您需要从原始类类型到其包装器方法的映射.

在某些Utility类中实现的静态实用程序方法将是一个优雅的解决方案,因为您将使用这样的转换:

Class<?> wrapper = convertToWrapper(int.class);
Run Code Online (Sandbox Code Playgroud)

或者,声明并填充静态地图:

public final static Map<Class<?>, Class<?>> map = new HashMap<Class<?>, Class<?>>();
static {
    map.put(boolean.class, Boolean.class);
    map.put(byte.class, Byte.class);
    map.put(short.class, Short.class);
    map.put(char.class, Character.class);
    map.put(int.class, Integer.class);
    map.put(long.class, Long.class);
    map.put(float.class, Float.class);
    map.put(double.class, Double.class);
}

private Class<?> clazz = map.get(int.class);  // usage
Run Code Online (Sandbox Code Playgroud)

  • 你忘记了void.class.只是在说' (2认同)

aga*_*gad 12

org.apache.commons.lang.ClassUtils.primitiveToWrapper(类)


Grz*_*ski 7

或者,如果你正在使用Guava,它有Primitives类,你可以这样使用:

Primitives.wrap(int.class); //returns Class<Integer>
Primitives.wrap(Integer.class); //returns Class<Integer>
Run Code Online (Sandbox Code Playgroud)