Java Enum.valueOf – Как обрабатывать параметр типа Class<E> как перечисление, если он также может быть целым или логичесJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java Enum.valueOf – Как обрабатывать параметр типа Class<E> как перечисление, если он также может быть целым или логичес

Сообщение Anonymous »


У меня есть метод, который анализирует ячейку Excel (эти ячейки всегда имеют тип String). Иногда эти ячейки содержат обычные типы, такие как int или boolean, а иногда и значения перечислений:

частный статический объект parseCellStringValue(String value, Class targetType) { если (value.isBlank()) { вернуть ноль; } Еще если (targetType == String.class) { возвращаемое значение; } else if (targetType == Integer.class || targetType == int.class) { вернуть Integer.parseInt(значение); /// ... /// ... /// ... } else if (targetType == Boolean.class || targetType == boolean.class) { return Boolean.parseBoolean(значение); } else if (targetType == AttributeKind.class) { вернуть AttributeKind.valueOf(значение); } Еще если (targetType == ReturnType.class) { вернуть ReturnType.valueOf(значение); } выбросить новое IllegalStateException( String.format("Передан неподдерживаемый целевой тип: %s", targetType)); } AttributeKind и AttributeType являются перечислениями, и в будущем в этом методе будет еще много перечислений, поэтому я хотел упростить это, заменив эти if на одну ветвь if. это будет обрабатывать все перечисления.

Я написал что-то вроде этого:

else if (targetType.isEnum()) { return Enum.valueOf(targetType, value); } Но IDE показывает ошибку в targetType внутри valueOf:
Обязательный тип: Класс
Предоставлено: Класс
причина: не существует экземпляра(ов) переменной(ей) типа T, чтобы E соответствовало Enum

Как будто компилятор не знает, что он только что проверил, что targetType определенно является перечислением. Я попытался привести targetType к Enum, но это не сработало. Я не знаю, как решить мою проблему на Java. Я подозреваю, что это может быть невозможно сделать, поскольку универсальный тип должен расширять Enum, но тогда случаи Integer и Boolean не будут работать. Можно ли написать на Java простое и элегантное решение, которое обрабатывало бы все перечисления?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Integer.toString(int i) против String.valueOf(int i) в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous
  • Кастинг-класс> до Class>
    Anonymous » » в форуме JAVA
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Кастинг-класс> до Class>
    Anonymous » » в форуме JAVA
    0 Ответы
    67 Просмотры
    Последнее сообщение Anonymous
  • При создании заголовка стиля C, совместим с ABI для переключения между Enum и Enum Class?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Integer.valueOf Отсечение части числа
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»