如何将Integer.class(和其他装箱的)转换为int.class(和其他基元)



是否有一种方法可以将Integer.class转换为int.class,依此类推其余的基元类型?

类似于:

jshell> Boolean.class.isPrimitive()
$1 ==> false
jshell> Boolean.class.asPrimitive() == boolean.class
$2 ==> true

可以从commons lang:中使用ClassUtils来实现这一点

jshell> import org.apache.commons.lang3.ClassUtils
jshell> ClassUtils.primitiveToWrapper(int.class)
$1 ==> class java.lang.Integer
jshell> ClassUtils.wrapperToPrimitive(Float.class)
$2 ==> float

没有Java SE方法,但很容易保留Map:

private static final Map<Class<?>, Class<?>> wrapperToPrimitive = Map.of(
Void.class, void.class,
Boolean.class, boolean.class,
Byte.class, byte.class,
Character.class, char.class,
Short.class, short.class,
Integer.class, int.class,
Long.class, long.class,
Float.class, float.class,
Double.class, double.class);

相关内容

最新更新