Создание подкласса класса с закрытым конструктором по умолчанию в Java - PullRequest
0 голосов
/ 30 октября 2019

Допустим, у меня есть класс A с закрытым конструктором и класс B, расширяющий его:

public class A {
    private A() {}
}

public class B extends A {
    public B(){
        // error - there is no default constructor available in 'A'
    }
}

Я знаю, что можно вызывать частные конструкторы с помощью Java Reflection, но как я могусделать это в конструкторе B ? Спасибо.

1 Ответ

2 голосов
/ 30 октября 2019

Если класс B расширяет A и конструктор A является закрытым, создание подклассов невозможно, если оба класса не определены в одном файле с внутренними классами (см. Предотвращение создания экземпляра класса ). Это потому, что конструктор подкласса делает (явный или неявный) вызов super(). Вызов super() в основном является просто вызовом соответствующего конструктора, и если этот конструктор объявлен private, этот вызов невозможен из какого-либо внешнего класса (например, определенного в другом файле).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...