stw*_*sel 5 java static-methods
我有一个类看起来像:
public class BadCodeStyle {
private static String theAnswer = null;
public static void setAnswer(String whatsNew) {
theAnswer = whatsNew;
}
public static String getAnswer() {
return (theAnswer == null) ? "I don't know" : theAnswer;
}
}
Run Code Online (Sandbox Code Playgroud)
当然这是实际课程的简化.真正发生的是静态方法如果变量为null则检索框架对象.设置变量只是为了在测试运行中插入一个模拟值,我希望将代码与框架隔离开来(为可测试性改造代码很有趣 - 就像戳你自己的眼睛类型的乐趣一样).
当我这样做时BadCodeStyle.setAnswer("42"),静态方法的行为类似于Singleton(?).我确实阅读了类加载器的解释并得出结论:只要加载了类,变量就会保留,只要JVM运行就可以了.那是对的吗?