У меня метод выглядит так.
public <E extends Enum<E> & Some> void setOther(final E some) {
setOther(ofNullable(some).map(e -> e.name()).orElse(null);
}
Теперь IntelliJ предлагает использовать ссылку на метод для части e -> e.name()
.
И я изменил его.
public <E extends Enum<E> & Some> void setOther(final E some) {
setOther(ofNullable(some).map(Enum::name).orElse(null);
}
Теперь компилятор жалуется на это.
... ....java:nnn: warning: [rawtypes] found raw type: Enum
setOther(ofNullable(some).map(Enum::name).orElse(null));
^
Установка @SuppressWarnings({"uncheked"})
не работает.
Как я могу устранить это? Должен ли я придерживаться e -> e.name()
?
)
.) - person Erwin Bolwidt   schedule 31.01.2018Some::name
? - person user7   schedule 31.01.2018[rawtypes]
, вы должны использовать@SuppressWarnings("rawtypes")
- person Erwin Bolwidt   schedule 31.01.2018Optional
не является общей заменой if/else. Вы можете записать этот метод какsetOther(some != null ? some.name() : null);
, что, на мой взгляд, более читабельно. И это полностью устранит проблемы с дженериками. - person VGR   schedule 31.01.2018Some
— это интерфейс. - person Jin Kwon   schedule 31.01.2018E::name
, я считаю это предупреждение ошибкой компилятора. См. также этот ответ. - person Holger   schedule 21.02.2018