Страницы

Поиск по вопросам

пятница, 12 апреля 2019 г.

Вопрос по static

Объясните, пожалуйста, почему вот такой код компилируется
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?


Ответ

Не-static nested class подразумевает работу внутри экземпляра другого (внешнего) класса и при создании получает экземпляр этого класса через конструктор, что позволяет обращаться к нему через (в данном случае) Solution.this. Вот и вся причина - в статическом контексте nested class не может получить экземпляр внешнего класса.

Комментариев нет:

Отправить комментарий