Как создать анонимный класс, используя метод, который возвращает ссылку на класс - PullRequest
0 голосов
/ 25 июня 2019

Я хочу создать анонимный класс, используя метод, который возвращает экземпляр класса

class FirstClass {
    public FirstClass() {
        System.out.println("First class created");
    }
}

class SecondClass {
    public SecondClass() {
        System.out.println("Second class created");
    }
    public FirstClass getFirstClass() {
        return new FirstClass();
    }
}

public class Ex1 {
    public FirstClass getFirstClass() {
        return new FirstClass();
    }
    public static void main(String[] args) {
        //here is the problem
        Object obj = new SecondClass().getFirstClass() {
            {
                System.out.println("Anonymous class created");
            }
        };
    }
}

Я ожидаю, что программа будет работать, создав анонимный класс, но он выдает синтаксическую ошибку. Любые решения или обходные пути принимаются. Спасибо

1 Ответ

0 голосов
/ 25 июня 2019

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

Лучше всего было бы просто создать FirstClass напрямую и переопределить инициализатор следующим образом:

new FirstClass() {
    {
        System.out.println("This is from inside anon!");
    }
};

...