Измените переменную stati c, определенную в суперклассе, перед вызовом конструктора подкласса - PullRequest
0 голосов
/ 13 января 2020

У меня есть classA с переменным состояния c PooledConnectionFactory. classB расширяет A.

public class A{
    private static PooledConnectionFactory con;
    public A(){
        this("gets URL from defaults properties file");
    }
    public A(final String url){
       if(con==null){
         //Initialize pooled connection       
       }
//code for connection here
    }
}
public class B extends A {

    private PooledConnectionFactory conn;

    public B(String url){
        super(url);

    }


    public B(){
        super();
    }

}

Я хочу PooledConnectionFactory как переменную non-stati c, чтобы для каждой службы она была инициализирована отдельно. Поскольку это расширение A, вызов переходит к конструкторам A.

Какие изменения я должен внести в класс B, чтобы добиться этого?

1 Ответ

0 голосов
/ 13 января 2020

Использовать синглтон вместо A конструктор

public class A {

    private static PooledConnectionFactory con;

    public A() {
        this("gets URL from defaults properties file");
    }

    public A(final String url) { }

    public static PooledConnectionFactory getPooledConnectionFactory() {
        if (con == null) {
            //Initialize pooled connection
        }
        return con;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...