2

まだ初期化されているかどうかにかかわらず、いくつかのフラグメントのIDを取得しようとしています

int i = myFragment.getId();int j = mySecondFragment.getId();

私の質問: 各有効なフラグメントのID を取得するためのよりクリーンな/より良い方法はありますか?

if (myFragment != null) {int i = myFragment.getId();}?

4

2 に答える 2

2

そのためにGoogle Guavaを使用できます。

もちろん、同様の機能を実装することもできますが、Guava はいくつかの素晴らしい例を示しています。

たとえば、引数がnullになる可能性があると想像してください。それをOptional考えてみましょう。そうであればすぐに失敗し、nullを受け入れないでください。または、デフォルト値を定義します。

public void method(Integer arg){
    Optional<Integer> possible = Optional.fromNullable(arg);
    Integer myNum = possible.get(); // Throws exception if arg is null
    Integer myNum2 = possible.or(0); // returns 0 if arg is null
}

アイデアは、null がアプリケーションの特定のレベルに渡されないようにすることです。理想的には、ビュー (または DB から戻る途中の永続化レイヤー) を決して通過しないようにすることです。

このアイデアが最後まで実行された場合。ビジネス層の中核では、null について心配する必要はありません。

グアバでできることは他にもたくさんあります。私の提案に従うことにした場合は、必ずそれを最大限に活用してください:)

于 2013-03-27T18:14:50.257 に答える
0

それがあなたがよくすることなら、あなたのためにチェックを行う関数を作ることができます。したがって、入力する代わりに

if (myFragment != null) {int i = myFragment.getId();}

いつでも次のようなことができます

public ID getFragmentId(Fragment myFragment){
    if (myFragment != null) {
        return myFragment.getId();
    } else {
        return someDefaultValue;
    }
}

あとは電話するだけ

i = getFragmentID(myFragment);

多くの繰り返し入力を回避し、コードを少し明確にします。

于 2013-03-27T20:46:57.657 に答える