У меня есть следующее перечисление:
import com.google.common.collect.Maps;
public enum ServiceType {
SOME_SERVICE (4, SomeServiceEntity.class);
private int id;
private Class<? extends ServiceEntity> entityClass;
private static final Map<Integer, ServiceType> LOOKUP = Maps.uniqueIndex(
Arrays.asList(ServiceType.values()),
ServiceType::getId <<=======
);
ServiceType(int id, Class<? extends ServiceEntity> entityClass) {
this.id = id;
this.entityClass = entityClass;
}
public int getId() {
return id;
}
// and other methods....
}
Эта строка кода, помеченная Intellij IDEA как:
Вызов ссылки на метод 'ServiceType :: getId' может привести к появлению 'java.lang.NullPointerException '
Как это возможно, пока у меня есть единственный конструктор, который включает мое поле id
, а enum - это статический список объектов, поэтому все они предполагают, что у них есть идентификатор?
Как мне избавиться от этого предупреждения?
UPD: наклеено:
private static final Map<Integer, ServiceType> LOOKUP = Arrays.stream(
ServiceType.values()).collect(Collectors.toMap(
ServiceType::getId, Function.identity()
)
);