public class TestThread
{
public static void main (String [] args)
{
Foo f = new Foo();
Thread t = new Thread(new Runnable()
{
public void run()
{
f.doStuff();
}
});
Thread g = new Thread()
{
public void run()
{
f.doStuff();
}
};
t.start();
g.start();
}
}
class Foo
{
public void doStuff()
{}
}
Мы знаем, что локальная переменная функции не находится в области видимости, пока работает другой метод, и мы также знаем, что локальный внутренний класс метода может использовать только конечную переменную метода. Мой вопрос в том, почему этот код компилируется и запускается, хотя f является локальной переменной и даже не финальной. Это должно выходить за рамки анонимных внутренних классов...
Error:(10, 9) java: local variable f is accessed from within inner class; needs to be declared final
. - person YoungHobbit   schedule 13.09.2015