次のコードを再利用可能な関数でラップすることは可能ですか?
編集: これは単なる例です。すべての再帰の深さに対して有効なソリューションが必要です
私が欲しいのは、次のコードが生成されることです:
if (MyObject o == null ||
o.getSubObject() == null ||
o..getSubObject().getSubSubObject() == null /*||
... */)
return defaultValue;
return o.getSubObject().getSubObject()/*...*/.getDesiredValue();
のようなものを呼び出すことによって
Object defaultValue = null;
Object result = NullSafeCall(o.getSubObject().getSubObject()/*...*/.getDesiredValue(), defaultValue);
2番目のコードブロックは単なるアイデアです。どのように見えるかは気にしません。必要に応じて、null
より深い関数を呼び出す前にすべてのチェックを回避できることだけが必要です...
インジェクションはおそらくこれを行うことができますが、他に/より簡単な解決策はありませんか? 注射はまだ見たことがありません...
EDIT2: 別の言語の例: http://groovy.codehaus.org/Operators#Operators-SafeNavigationOperator