Я обнаружил, что мы не можем использовать не финальную переменную внутри метода внутреннего класса, но когда я сам провел эксперимент, я получил другой результат
В StackOverflow есть несколько Ответов, описывающих причину Почему внутренние классы Java требуют «окончательных» переменных внешнего экземпляра? , я понял концепцию и попробовал сам с двумя классами в IntelliJ
Driver
Класс
public class Driver{
public static void main(String[] args) {
String outsideVar = "anything";
InterfaceClassTest object1 = new InterfaceClassTest() {
@Override
public void InterfaceFunction() {
System.out.println(outsideVar);
}
};
object1.InterfaceFunction();
};}
InterfaceClassTest
Класс
public interface InterfaceClassTest {
public abstract void InterfaceFunction();
}
Я ожидал, что получу ошибку для приведенного выше кода, но он работал нормально, так что почему я могу использовать outsideVar
в методе внутреннего класса