私人声明 Java

private statement Java

我是 Java 编程的超级新手。这是我的困惑。

public class Singleton
{
public static Singleton GetInstance()
{
if (sInstance == null)
{
sInstance = new Singleton();
}
return sInstance;
}
private Singleton()
{
// No code here
}
private static Singleton sInstance;
}

我想知道最后一个 private static Singleton sInstance 是做什么的?你不想在代码的开头声明它吗? 提前致谢。

sInstance 是一个 class 成员字段,声明为 static。它与封闭的 class Singleton 属于同一类型。编译器无论在开头还是结尾都会接受它。

sInstance 是您要通过 GetInstance() return 的对象。如果 sInstance == null(因此尚未创建),则创建新对象,如果与之前创建的对象不同,则 returned。 Singleton 类型的 sInstance 对象是私有的,因此只有 public GetInstance() 方法可以 return 它(Singleton Class 中唯一的 public 访问方法)。这种设计模式不会让您创建多个由 sInstance 引用的 Singleton 对象实例。正如 Manouti 在之前的回复中所说,将它放在代码中的什么位置并不重要,但在开始时它的可读性更高。

这在静态字段和实例级方法的情况下工作正常,因为静态字段在 class 加载和初始化 阶段被解析和初始化。因此,实例级方法在访问静态字段时已经知道存在

尝试对静态块/静态字段和实例块/实例字段做同样的事情(在声明之前访问)给出错误

static{
    if (i == 0) { // error . i cannot be resolved
        System.out.println("0");
    }

}
static int i;

{
    if (i == 0) { // error . i cannot be resolved
        System.out.println("0");
    }

}
int i;

因为 sInstance 是一个静态变量,这意味着无论在代码中的什么位置,您都可以访问它。将它放在代码的开头更具可读性,但无论哪种方式都有效。