在我的 Java 程序中,即使在初始化并将值放入 HashMap 之后,我的 HashMap 中也会出现 NullPointerException
In my Java program, I get NullPointerException in my HashMap even after initialising and putting values to the HashMap
在我的 Java 程序中,即使在初始化并将值放入 HashMap 之后,我的 HashMap 中仍出现 NullPointerException。
LinkedHashMap<Short,BigInteger> ft = new LinkedHashMap<Short,BigInteger>(5);
ft.put( (short) 1, BigInteger.valueOf(A));
ft.put( (short) 2, BigInteger.valueOf(B));
System.out.println(ft.isEmpty());
System.out.println(ft.get((short)1));
System.out.println(ft.get((short)2));
System.out.println(ft.containsKey(1));
System.out.println(ft.containsValue(1));
如果 A
或 B
的类型为 Long
(或 Short
或 Integer
)并包含 null
,这说明异常(因为 BigInteger.valueOf()
需要一个 long
,如果你传递给它一些引用数字类型,它会将它拆箱为原始类型,这将导致 NullPointerException
如果 Long
/ Integer
/Short
是 null
)。
我尝试用非空值替换 A 和 B 并测试了您的代码,没有出现异常,所以一定是这样。
您可以将代码缩减为:
BigInteger.valueOf(A);
BigInteger.valueOf(B);
仍然得到异常。
只要 A 和 B 不为空,我就可以正常工作。如果它们为 null,您将得到 Nullpointerexception,因为您无法从 null 中获取 BigInteger 值。
查看代码,您的 A 或 B 变量是否可能是 Long 类型,可能为 null。
即。
long A = 10;
Long B = null;
LinkedHashMap<Short,BigInteger> ft = new LinkedHashMap<Short,BigInteger>(5);
ft.put( (short) 1, BigInteger.valueOf(A));
ft.put( (short) 2, BigInteger.valueOf(B));
上面会报错……
BigInteger.valueOf(...) 将成为空指针异常的原因。
问候
诺曼
在我的 Java 程序中,即使在初始化并将值放入 HashMap 之后,我的 HashMap 中仍出现 NullPointerException。
LinkedHashMap<Short,BigInteger> ft = new LinkedHashMap<Short,BigInteger>(5);
ft.put( (short) 1, BigInteger.valueOf(A));
ft.put( (short) 2, BigInteger.valueOf(B));
System.out.println(ft.isEmpty());
System.out.println(ft.get((short)1));
System.out.println(ft.get((short)2));
System.out.println(ft.containsKey(1));
System.out.println(ft.containsValue(1));
如果 A
或 B
的类型为 Long
(或 Short
或 Integer
)并包含 null
,这说明异常(因为 BigInteger.valueOf()
需要一个 long
,如果你传递给它一些引用数字类型,它会将它拆箱为原始类型,这将导致 NullPointerException
如果 Long
/ Integer
/Short
是 null
)。
我尝试用非空值替换 A 和 B 并测试了您的代码,没有出现异常,所以一定是这样。
您可以将代码缩减为:
BigInteger.valueOf(A);
BigInteger.valueOf(B);
仍然得到异常。
只要 A 和 B 不为空,我就可以正常工作。如果它们为 null,您将得到 Nullpointerexception,因为您无法从 null 中获取 BigInteger 值。
查看代码,您的 A 或 B 变量是否可能是 Long 类型,可能为 null。
即。
long A = 10;
Long B = null;
LinkedHashMap<Short,BigInteger> ft = new LinkedHashMap<Short,BigInteger>(5);
ft.put( (short) 1, BigInteger.valueOf(A));
ft.put( (short) 2, BigInteger.valueOf(B));
上面会报错……
BigInteger.valueOf(...) 将成为空指针异常的原因。
问候 诺曼