静态方法中的无状态是什么意思?

问题描述 投票:0回答:3

静态方法不应包含状态。这里的“状态”是什么意思?

我读到静态方法不需要实例化,并且不使用实例变量。那么什么时候可以使用静态方法呢?我读过静态方法不好?我应该在编码时包含它吗?

static-methods stateless
3个回答
2
投票

状态意味着存储一些信息,静态方法是在类加载时加载的,因此不需要实例来调用静态方法,您可以使用类名来调用该方法,这取决于何时使用静态方法。您可以使用静态方法作为产品的单个组件,只需传递您的参数并完成您的工作。


0
投票

作为答案,这里有一个例子:

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;
  }
}

它们本身既不好也不好,它们只是静态的。


0
投票

静态成员不是类的对象。它们在类加载时被初始化。它们对类而不是对象进行操作。当为一个类创建 N 个对象时,每个对象将保存单独的非静态成员。但是,静态成员在它们之间共享。因此,他们没有任何状态数据。

© www.soinside.com 2019 - 2024. All rights reserved.