Как преобразовать Integer.class (и другие в штучной упаковке) в int.class (и другие примитивы)? - PullRequest
1 голос
/ 09 июля 2020

Есть ли способ преобразовать Integer.class в int.class и так далее или остальные примитивные типы?

Что-то вроде:

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

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Это можно сделать с помощью ClassUtils из commons-lang :

jshell> import org.apache.commons.lang3.ClassUtils

jshell> ClassUtils.primitiveToWrapper(int.class)
$1 ==> class java.lang.Integer

jshell> ClassUtils.wrapperToPrimitive(Float.class)
$2 ==> float
1 голос
/ 09 июля 2020

Для этого не существует метода Java SE, но сохранить карту легко:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...