这个问题更像是谜题而不是真正的问题,
这种方法有什么问题:
public boolean areEqual(Long a, long b)
{
return a==b;
}
它没有任何问题,除了它可以抛出一个NullPointerException
if a
is null
(自动拆箱将抛出一个 NPE)。
这取决于...
例如,如果你传递 null 作为第一个参数(你可以),你会得到一个NullPointerException
, 因为toLongValue
将在对象上调用。
由于自动装箱/拆箱
这种方法没有任何问题(好吧,只有当a
它为空时,它才能抛出 NPE)......
但是如果错误意味着不好的做法,那么您没有使用良好的缩进并且不遵循 java 编码约定(第一行的括号)
您的 a 值可以为 null(Long 类型)而 b 不能为(long 类型)因此 a==b 在 a==null 时会导致 nullpointer。
Long a 应该是一个指向 long 值的指针
long b 应该是一个 long 值
所以如果你测试等于你测试一个指针(值)与一个长值