Проверьте значение перечисленияOf в Java. Дополнительный конвейер сопоставления.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проверьте значение перечисленияOf в Java. Дополнительный конвейер сопоставления.

Сообщение Anonymous »

У меня есть следующий метод, и здесь я сначала получаю имя ExportProductType, а затем получаю значение этого имени. Если name или valueOf(name) имеет значение null, выдается исключение.

Код: Выделить всё

public static ProductType getExportProductType(ExportProductType exportProductType) {
return Optional.ofNullable(exportProductType)
.map(ExportProductType::name)
.map(ProductType::valueOf)
.orElseThrow(() -> new ProductTypeNotFoundException());
}
Все в порядке и работает без проблем. Однако, когда я передаю значение перечисления ExportProductType, которое недоступно в перечислениях ProductType, я не могу его перехватить, и оно выдает другое исключение «Нет константы перечисления...». Итак, я думаю, мне нужно проверить, имеет ли ProductType::valueOf значение null перед .map(ProductType::valueOf). Как мне это проверить? Использование логического значения или фильтра? Или другой способ, подходящий для потока() в Java?
Я думаю, что-то подобное после .map(ExportProductType::name):

Код: Выделить всё

.filter(result -> ProductType::valueOf(result) != null)
Обновление: Я нашел правильный способ, как показано ниже:
< р>

Код: Выделить всё

EnumUtils.isValidEnum(ProductType.class, exportProductType.name());
Мне просто нужно использовать его в потоке(). Итак, можно ли сделать такую ​​же проверку в потоке()? Это нормально, чуть ниже строки .map(ExportProductType::name)?

Код: Выделить всё

.filter(x -> EnumUtils.isValidEnum(ProductType.class, x))


Подробнее здесь: https://stackoverflow.com/questions/688 ... g-pipeline
Ответить

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

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

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

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

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