コードでは、チェーンメソッドがたくさんあります。たとえば、obj.getA().getB().getC().getD()
です。メソッドgetD()
がnullではないが、その前にすべての以前のgetterをチェックする必要があるかどうかを調べるヘルパークラスを作成したいと思います。私はこの方法でそれを行うことができます。メソッドチェイン内の最後のゲッターがヌルでないかチェックしてください。
try {
obj.getA().getB().getC().getD();
}
catch (NullPointerException e) {
// some getter is null
}
か(「愚か」である)
if (obj!null && obj.getA()!=null && obj.getA().getB()!=null && ...) {
obj.getA().getB().getC().getD();
}
else {
// some getter is null
}
を、私は私のコードでtry{} catch()
を使用して、それを毎回チェックする必要はありません。この目的のための最良の解決策は何ですか?
私は最高のだろうと思います。
obj.getA().getB().getC().getD().isNull()
- この目的のために、私はisNull()
メソッドが含まれているいくつかのインターフェイスを実装例えば、私のゲッターのすべてを変更する必要があります。NullObjectHelper.isNull(obj.getA().getB().getC().getD());
- これは最高です(私はそうだと思いますが)どのようにこれを実装するのですか?
解決策。リファクタリング#LawOfDemeter – user802421
@ user802421連鎖しないでください。アプリケーション全体をリファクタリングする必要はありません。私がしたいのは、いくつかのヘルパークラスを作成することだけです。私はリファクタリングが一番良いと思っていますが、時間がありません。 – pepuch
あなたの2つの "解"が中間結果が 'ヌル 'であるのに役立つのはわかりません – Henry