0

这个问题更像是谜题而不是真正的问题,

这种方法有什么问题:

public boolean areEqual(Long a, long b)
{
return a==b;
}
4

5 回答 5

5

它没有任何问题,除了它可以抛出一个NullPointerExceptionif ais null(自动拆箱将抛出一个 NPE)。

于 2013-02-13T15:24:20.067 回答
2

这取决于...

例如,如果你传递 null 作为第一个参数(你可以),你会得到一个NullPointerException, 因为toLongValue将在对象上调用。

于 2013-02-13T15:24:56.000 回答
0

由于自动装箱/拆箱

这种方法没有任何问题(好吧,只有当a它为空时,它才能抛出 NPE)......

但是如果错误意味着不好的做法,那么您没有使用良好的缩进并且不遵循 java 编码约定(第一行的括号)

于 2013-02-13T15:24:29.167 回答
0

您的 a 值可以为 null(Long 类型)而 b 不能为(long 类型)因此 a==b 在 a==null 时会导致 nullpointer。

于 2013-02-13T15:29:11.300 回答
0

Long a 应该是一个指向 long 值的指针

long b 应该是一个 long 值

所以如果你测试等于你测试一个指针(值)与一个长值

于 2013-02-13T15:26:18.230 回答