gpt4 book ai didi

java - EnumMap 引发 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 11:02:16 27 4
gpt4 key购买 nike

我有一个枚举和一个 EnumMap<Parameters, Byte> .

我将 map 放入一个类中以隐藏“字节”值。所以我有一个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);
}
}

当我调用任何方法时,NPW 会将哪个点提升为 put !如果我做了parameters public 并直接调用该方法就可以了。

final Parameters parameters = new Parameters();
//parameters.parameters.put(Parameter.BLAH, (byte) 0x00);
parameters.set(Parameter.BLAH, false); // NPE

有人可以向我解释一下我的行为吗?

最佳答案

问题在于您使用 put 返回值的方式,记录为:

the previous value associated with specified key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with the specified key.)

第一次为任何特定键调用 set 方法时,返回值将为 null - 但随后您将其拆箱为 byte,这将引发您所看到的异常。

假设您想要返回之前的值,只需将每个方法的返回类型更改为Byte即可。

关于java - EnumMap 引发 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719720/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com