0

「ローカル内部クラスをどこで使用する必要があるか」を明確に説明してください。

例:

public class LocalTest
{

    int b=30;
    void display()
    {
        class Local{ 
            void msg()
            {

                 System.out.println(b);
            }       
        }

        Local l = new Local();
        l.msg();
    }

    public static void main(String args[])
    {
        LocalTest lt = new LocalTest();
        lt.display();
    }
}

これLocal classが Local 内部クラスです。のみに役立ち display()ます。これらのローカル内部クラスを使用するのはどのような状況ですか?

4

2 に答える 2

0

主な理由は、いくつかのインターフェースをローカルに実装してどこかに渡す必要がある場合ですが、実装にさらにメソッドを追加したいため、匿名の実装は適合しません。

public static void Main (String [] args) throws Exception
{
    class MyRunnable extends Runnable
    {
        private boolean complete = false;

        public synchronized void waitComplete () throws InterruptedException
        {
            while (!complete) wait ();
        }

        @Override
        public void run ()
        {
            // Do something useful

            synchronized (this)
            {
                complete = true;
                notifyAll ();
            }
        }
    }

    MyRunnable r = new MyRunnable ();
    new Thread (r).start ();

    // Do something in parallel with new thread

    r.waitComplete (); // We forgot about Thread.join ()
}
于 2013-02-14T08:37:24.727 に答える
-1

私はそれが2つの用途があるかもしれないと主張します:

  • とにかく、関数内でのみ使用されるクラスで、問題の関数の外側の名前空間を汚染したくありません。
  • finalコンストラクターを介して明示的に渡すことなく、関数内で宣言された( ) 変数を使用したい。
于 2013-02-14T08:36:07.067 に答える