静态方法不应包含状态。这里的“状态”是什么意思?
我读到静态方法不需要实例化,并且不使用实例变量。那么什么时候可以使用静态方法呢?我读过静态方法不好?我应该在编码时包含它吗?
状态意味着存储一些信息,静态方法是在类加载时加载的,因此不需要实例来调用静态方法,您可以使用类名来调用该方法,这取决于何时使用静态方法。您可以使用静态方法作为产品的单个组件,只需传递您的参数并完成您的工作。
作为答案,这里有一个例子:
public class SomeUtilityClass {
private static boolean state = false;
public static void callMeTwiceImBad() throws Exception {
if (state) {
throw new Exception("I remember my state from previous call!");
}
state = true;
}
public static int sum(int a, int b) {
return a + b;
}
}
它们本身既不好也不好,它们只是静态的。
静态成员不是类的对象。它们在类加载时被初始化。它们对类而不是对象进行操作。当为一个类创建 N 个对象时,每个对象将保存单独的非静态成员。但是,静态成员在它们之间共享。因此,他们没有任何状态数据。