#java #ооп
Объясните, пожалуйста, почему вот такой код компилируется public class Solution{ public static void main(String[] args){ System.out.println(new KissMyShinyMetalAss()); } public static class KissMyShinyMetalAss{ } } А вот этот не компилируется public class Solution{ public static void main(String[] args){ System.out.println(new KissMyShinyMetalAss()); } public class KissMyShinyMetalAss{ } } В одном случае внутренний класс объявлен как static в другом нет. Просто не могу понять как в данном случае это влияет на компиляцию и почему не позволяет создать new KissMyShinyMetalAss?
Ответы
Ответ 1
Не-static nested class подразумевает работу внутри экземпляра другого (внешнего) класса и при создании получает экземпляр этого класса через конструктор, что позволяет обращаться к нему через (в данном случае) Solution.this. Вот и вся причина - в статическом контексте nested class не может получить экземпляр внешнего класса.
Комментариев нет:
Отправить комментарий