Анонимный вопрос - PullRequest
       5

Анонимный вопрос

4 голосов
/ 18 ноября 2009

Я немного сомневаюсь по поводу этой строки:

Анонимный класс не может определить конструктор

тогда, почему мы также можем определить класс Anonymous со следующим синтаксисом:

new class-name ( [ argument-list ] ) { class-body }

Ответы [ 3 ]

9 голосов
/ 18 ноября 2009

Вы не определяете конструктор в анонимном классе, вы вызываете конструктор из суперкласса.

Вы не можете добавить правильный конструктор для анонимного класса, однако вы можете сделать что-то подобное. А именно блок инициализации.

public class SuperClass {
   public SuperClass(String parameter) {
       // this is called when anonymous class is created
   }
}

// an anonymous class is created and instantiated here
new SuperClass(parameterForSuperClassConstructor) {
   {
      // this code is executed when object is initialized
      // and can be used to do many same things as a constructors
   }

   private void someMethod() {

   }

}
3 голосов
/ 18 ноября 2009

Ваш пример создает анонимный подкласс из class-name, и вам не разрешено создавать конструктор, специфичный для вашего анонимного класса. Список аргументов, который вы даете, совпадает со списком аргументов для конструктора class-name.

1 голос
/ 18 ноября 2009

Это означает, что существует абстрактный класс с именем class-name с определенным конструктором. Вы используете этот конструктор в своем анонимном классе, аналогично использованию super () в конструкторе подкласса.

...