この質問は本当の質問というよりはパズルのようなものですが、
この方法の何が問題なのですか:
public boolean areEqual(Long a, long b)
{
return a==b;
}
この質問は本当の質問というよりはパズルのようなものですが、
この方法の何が問題なのですか:
public boolean areEqual(Long a, long b)
{
return a==b;
}
NullPointerException
ifa
がスローされる可能性があるという事実を除けば、問題はありませんnull
(自動アンボックスはNPEをスローします)。
場合によります...
たとえば、最初の引数としてnullを渡すと(可能です)、オブジェクトで呼び出されるNullPointerException
ため、が得られます。toLongValue
自動ボクシング/アンボクシングによる
この方法には何も問題はありません(まあ、a
nullの場合のみ、NPEをスローできます)...
しかし、間違っていることが悪い習慣を意味する場合は、適切なインデントを使用しておらず、Javaコーディング規則(最初の行の括弧)に従わないでください。
値はnull(ロングタイプ)にすることはできませんが、bは(ロングタイプ)にすることはできません。したがって、a == nullの場合、a==bはnullポインターを引き起こします。
long a は long 値へのポインターである必要があります
long b は long 値でなければなりません
したがって、equal をテストする場合は、ポインター (値) と long 値をテストします。