Анонимный внутренний класс используется для создания объекта, который никогда не будет ссылаться снова. Он не имеет имени и объявляется и создается в том же самом заявлении. Это используется там, где вы обычно используете переменную объекта. Вы заменяете переменную ключевым словом new
, вызовом конструктора и определением класса внутри {
и }
.
При написании Threaded Program в Java это обычно выглядит так:
ThreadClass task = new ThreadClass();
Thread runner = new Thread(task);
runner.start();
Используемый здесь ThreadClass
будет определяться пользователем. Этот класс будет реализовывать интерфейс Runnable
, необходимый для создания потоков. В ThreadClass
также необходимо реализовать метод run()
(только метод из Runnable
). Понятно, что избавление от ThreadClass
было бы более эффективным, и именно поэтому существуют Анонимные Внутренние Классы.
Посмотрите на следующий код
Thread runner = new Thread(new Runnable() {
public void run() {
//Thread does it's work here
}
});
runner.start();
Этот код заменяет ссылку сделанный в task
в самом верхнем примере. Вместо того, чтобы иметь отдельный класс, Анонимный Внутренний Класс внутри конструктора Thread()
возвращает неназванный объект, который реализует интерфейс Runnable
и переопределяет метод run()
. Метод run()
будет включать в себя заявления внутри, которые выполняют работу, требуемую потоком.
Отвечая на вопрос о том, является ли анонимные внутренние классы одним из преимуществ Java, я должен сказать, что я не совсем уверен, поскольку я не знаком со многими языками программирования на данный момент. Но я могу сказать, что это, безусловно, более быстрый и простой способ кодирования.
Ссылки: Sams Teach Yourself Java в 21 день Седьмое издание