@Den4_x

Зачем нужны анонимные классы в java и как к ним обратиться?

package practice;

public class Practice {

    public static void main(String[] args) {

    }
}

class Classes {

    class Inner {

        void meth3() {
            //Анонимный класс
            Classes x1 = new Classes() {
                //действия
            };
        }
    }
}
  • Вопрос задан
  • 2388 просмотров
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Это у вас не анонимный класс, а внутренний класс. Обращаться к нему можно из любого места внешнего класса, ну и из самого себя.
А анонимный класс, как следует из названия, имени не имеет. И создается например из интерфейса, реализуя его методы на месте.

Внутренние классы могут быть закрытыми (private/protected) по умолчанию и видны будут только из внешнего класса, либо быть публичными (public static) и быть доступны всему приложению. Обычно используются, чтобы не раздувать структуру файлов-классов и для внутреннего применения в качестве временных хранилищ и оберток.

Анонимный же класс создается на месте использования и служит для применения в конкретном месте приложения. В примере ниже мы в переменную threadзаписываем инcтанс нового класса, наследуемого от Thread с перегруженным методом run

class MyThread  
{ 
    public static void main(String[] args) 
    { 
         // Создаем расширение стандартного класса Thread с переопределением метода run()
         Thread thread = new Thread()
        { 
            public void run() 
            { 
                System.out.println("Child Thread"); 
            } 
        }; 
        thread.start(); 
        System.out.println("Main Thread"); 
    } 
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект