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是一个本地内部类。它仅对 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

我认为它可能有两个用途:

  • 您不想用一个只在函数内部使用的类来污染函数外部的命名空间。
  • 您想使用final函数内声明的任何 ( ) 变量,而不必通过构造函数显式传递它们。
于 2013-02-14T08:36:07.067 回答