为什么这种方法错了?

时间:2013-02-13 15:21:58

标签: java

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

这种方法出了什么问题:

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

5 个答案:

答案 0 :(得分:5)

它没有任何问题,除了NullPointerException如果anull(自动拆箱会抛出NPE),它可以抛出{{1}}。

答案 1 :(得分:2)

这取决于......

例如,如果您将null作为第一个参数传递(您可以),那么您将获得NullPointerException,因为将在对象上调用toLongValue

答案 2 :(得分:0)

由于自动装箱/拆箱

此方法没有错(嗯,只有当a为空时,它才会抛出NPE)......

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

答案 3 :(得分:0)

长a应该是指向长值的指针

长b应该是一个长值

所以如果你测试相等,你测试指针(值)与长值

答案 4 :(得分:0)

您的值可以为null(长型)而b不能为(长型) 因此,当a == null时,a == b将导致nullpointer。