У меня есть Enum и EnumMap<Parameters, Byte>
.EnumMap raise NullPointerException
Я поместил карту в класс, чтобы скрыть значения «байт». Поэтому у меня есть метод set(Parameter, int)
и set(Parameter, boolean)
.
public enum Parameter {
BLAH
}
public class Parameters {
private final Map<Parameter, Byte> parameters = new EnumMap<>(Parameter.class);
public byte set(Parameter parameter, boolean set) {
return this.parameters.put(parameter, (byte) (set ? 0x01 : 0x00));
}
public byte set(Parameter parameter, int value) {
return this.parameters.put(parameter, (byte) value);
}
}
Когда я называю любого из моих методов еще НПЖ поднимет какой пункт put
! Если я сделал публикацию parameters
и вызовет метод dircetly, он будет работать.
final Parameters parameters = new Parameters();
//parameters.parameters.put(Parameter.BLAH, (byte) 0x00);
parameters.set(Parameter.BLAH, false); // NPE
Может ли кто-нибудь объяснить мне, что такое поведение для меня?
это должно показать ошибку компилятора: new EnumMap <> (Parameter.class); –
@StefanBeike: Зачем это бросать ошибку compating? Это совершенно правильный код. –
Невозможно вывести аргументы типа для EnumMap <> ??? –