Écrire à champ statique à partir de la méthode d'instance

J'ai mon code comme ci-dessous. Je vois

public MyClass{

    private static DataSource dataSource = null;

    private static DataSource getDataSource(){
        if (dataSource == null) {
            try {
                dataSource = //something.
            } catch (Exception e) {
                //some exception.
            }
        }

        return dataSource;
    }

    public List doSomething(){

        //...

        if(dataSource == null){
            dataSource = getDataSource();
        }

        dataSource.getConnection();
        //...

    }
}

Je voir le message suivant dans l'analyse sonar.

Dodgy - Write to static field from instance method

This instance method writes to a static field. This is tricky to get correct if multiple instances are being manipulated, and generally bad practice.
findbugs:ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD Sep12 Reliability > Architecture

Je vois que tout va bien dans cette mise en œuvre, à l'exception de la modification de la variable statique dans doSomething méthode. Comment pouvons-nous résoudre ce problème ?

Faire de la cession, de la méthode statique?

OriginalL'auteur TechCrunch | 2014-07-11