try{} catch(NullPointerException e){}
ブロックについて何か考えたことはありますか?洗練されていないように感じるかもしれませんが、前の呼び出しが を返したためにいずれかのメソッド呼び出しが失敗した場合、コードを停止し、null
null の場合はデフォルト値を与える機会を与えます。
別のオプションは次のようなものです。
Something v = /*Default Value*/ // Will be overwritten if subsequent methods succeed.
Object temp = a.getB(); // Use whatever Object type getB() returns.
if(temp != null){
temp = temp.getC();
/* If getC() returns a different type of object,
* either use a different variable or make the temp variable even broader
* (such as the generic Object type) */
if(temp != null){
temp = temp.getD();
if(temp != null){
temp = temp.getE();
if(temp != null)
v = temp;
/* If all previous calls returned something substantial,
* v will be something useful */
}//if(getE() != null)
}//if(getD() != null)
}//if(getC() != null)
}//if(getB() != null)
必要に応じて、if ステートメントをネストしないことで、CPU 効率はわずかに低下しますが、読みやすいバージョンを使用できます。すべての if ステートメントが次々に実行される場合、1 つの null によって次のすべてのステートメントが実行されなくなりますが、その値は毎回チェックされます。
これらのステートメントを生成する限り、私にはよくわかりません。Object
それは、以前のメソッド呼び出しによって返されたメソッドからどのような新しいメソッドが利用可能になるかをどれだけ前もって予測できるかに大きく依存します。コードの自動生成を目指している場合は、私の最初の提案を使用することをお勧めします。try-catch