2

私は多くの開発者method local classがコードで(匿名クラスを意味するのではなく)使用しているのを見てきました。

たとえば(Androidの場合):

private void myFunc()
{
    class Worker extends AsyncTask<Void, Void, Void> 
    {...}

    new Worker();
}

設計時と実行時の両方でこれを行う場合の長所と短所は何ですか?メソッドが何度も呼び出されるときにローカルクラスを使用するのは悪いことですか?

4

2 に答える 2

1

すでに述べたように、カプセル化は1つの理由であり、それ自体では十分な意味がない可能性がある数行の新しいファイルを作成する必要がないことも理由です。他の言語では、動作(高階関数、ラムダ式など)を渡すのがはるかに簡単で一般的であり、新しいファイルに新しいクラスを書き込む必要はありません。

あなたが投稿したこれは、Javaがそれを達成しなければならない最も安価な方法の1つです...これまでのところ。Java 8は、これらの他の機能のいくつかをもたらすようです。

于 2013-02-24T22:04:16.947 に答える
1

コードを読んだ人は誰でも、メソッド ローカル クラスが他の場所では使用されていないことをすぐに知ることができます。つまり、そのメソッド内でのみ使用できます。したがって、将来リファクタリングが必要になった場合、開発者は、変更がそのメソッドにのみ影響し、プログラム内の他のものには影響しないことがわかります。数千のクラスを持つ企業規模のアプリケーションを考えてみましょう。この余分な情報は非常に価値があります。

于 2013-02-24T22:31:08.777 に答える