我遇到了一个这样设置的类:
public class MyClass {
private static boolean started = false;
private MyClass(){
}
public static void doSomething(){
if(started){
return;
}
started = true;
//code below that is only supposed to run
//run if not started
}
}
我对静态方法的理解是你不应该在它们中使用类变量,除非它们是常量,并且不会改变。相反,您应该使用参数。我的问题是为什么通过执行 MyClass.doSomething() 多次调用这不会中断。在我看来它不应该工作,但确实如此。它只会通过一次 if 语句。
那么有人可以向我解释为什么这不会中断吗?
最佳答案
方法 doSomething()
和变量 started
都是静态的,所以变量只有一个副本,可以从 doSomething()
访问。第一次调用 doSomething()
时,started
为 false,因此它将 started
设置为 true,然后执行...第二次和后续调用时,started
为真,因此它什么都不做就返回。
关于java - 静态变量和方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/606196/