请你清楚地解释一下“我们需要在哪里使用当地的内部课程”?
示例:
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()
有用。我们在哪种情况下使用这些本地内部类?
答案 0 :(得分: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 ()
}
答案 1 :(得分:-1)
我认为它可能有两种用途:
final
)变量,而不必通过构造函数显式传递它们。