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 является локальной переменной и даже не является окончательным. Она должна быть из области видимости для анонимных внутренних классов ...Область локальной переменной для анонимного класса, объявленная в методе
В чем Ваш вопрос здесь>? f является объектом типа Foo ..., это имело бы большее значение, если бы вы, например, объявили строку In во внешнем классе и спросили, почему ее доступно в классе Foo ... – QuakeCore
@abhishekbafna: o такой странный комментарий от пользователя с вашей репутацией ..., thats java 101! – QuakeCore
@abhishekbafna серьезно сейчас?, [Это не так] (http://stackoverflow.com/questions/10442758/why-must-a-java-file-have-the-same-name-as-its-the-sublic-name-as-its-the-public- класс) – QuakeCore