NullPointerException
は、常にコードの乱雑さです。すべてのオブジェクトがnullセーフであるかどうかをチェックし、NPEを投げないようにする必要があります。安全なメソッドと式をNullPointerExceptionでコーディングするには?
私は状況に出くわした:
public void aMethod(Employee emp){
String fullEmployeeDetailRow = "Name: "+emp.getName().getFirstName()
+"LastName :"+emp.getName().getFirstName()
+"Address:"
+emp.getAddress().getBillingAddress().getBuildingNumber().getApartmentNumber()
+" "
+emp.getAddress().getBillingAddress().getStreetName()
}
は、上記の例ではNPEのように多くの可能性があります。
emp.getAddress().getBillingAddress().getBuildingNumber().getApartmentNumber()
式の例えば、いずれかがNULLと考えられるNPE源とすることができる
getAddress() or getBillingAddress() or getBuildingNumber()
に呼び出します。だから私は今、それぞれがnullになる可能性があるかどうかを確認するために自分のコードを乱雑にする必要があります。
私の質問/考え方は、式を受け取り、それがNullPointerException
をスローするかどうか評価し、デフォルト値を返す場合は空白と言うメソッドを作成する方法ですか?" "
?
したがって、この場合には、私は方法が必要
expression=emp.getAddress().getBillingAddress().getBuildingNumber().getApartmentNumber()
String checkForNPE(expression){
try{
return expression;
}catch(NullPointerException e){
return " " // default Value
}
}
問題は、私は、このようなメソッドを作成し、そこに式を渡ししようとすると、Javaは呼び出す前に式を評価していますメソッドとNPEは事前にスローされます!
式にメソッドを渡して、メソッド内で評価するようにJavaに依頼するにはどうすればよいですか?
ここで、式を初期化する場所でtryブロックを作成しないでください。 – Dimi
@Dimiそれは私が避けようとしていることです。 Nullチェック/ NPEコード混乱を避け、try/catchチェックを別のcheckForNPE()メソッドに移動しようとすると、メインコードの式をチェックしないようにしています。同じ場所の周りに多くのそのような式があります(私の例を見てください)。そのコードをcheckForNPE()に委譲して、すべての式を再利用します。 – supernova