我关注了辛格尔顿:

public class GameConfig {

    private static GameConfig mGameConfig = null;

    private String mStr = "Boo";

    public static GameConfig getInstance(){

    if(mGameConfig == null){
        mGameConfig = new GameConfig();
    }

    return mGameConfig;
}

    private GameConfig(){}

    public String getStr() {
      return mStr;
    }
}


现在,我尝试做一些实验:

可以说我还有另一个使用此singelton的类User

public class User{

  ....

  private void init(){
    String str = GameConfig.getInstance().getStr();
  }

}


到现在为止还挺好。

我将采用上述的类User并添加import static

import static com.app.utils.GameConfig.getInstance; // no error, why??

public class User{

  ....

  private void init(){
    String str = GameConfig.getInstance().getStr();

    //  I can't type
    // String str = getStr(); !!
    // getInstance return instance
  }
}

最佳答案

为什么没有错误?因为那是有效的语法。工作正常不是很好吗?

import static com.app.utils.GameConfig.getInstance; // no error, why??


将使getInstance()在不命名类的情况下可用,例如:

GameConfig gc=getInstance();


作为附带说明,我将方法重命名为更具描述性的名称,例如getGameConfig

10-06 14:58