gpt4 book ai didi

java - 类完成后静态变量变为 null

转载 作者:行者123 更新时间:2023-12-01 20:53:01 25 4
gpt4 key购买 nike

我有三门课

  1. StaticHolder.java - 保存静态变量。
  2. StaticInitializer.java - 仅负责通过静态方法初始化变量。
  3. Application.java - 通过 getter 方法检索静态变量值。

我认为在 JVM 中初始化静态变量一次,直到我们停止 JVM 后才会进行。所以我调用了一次 ran StaticInitializer 来执行初始化。并且厌倦了从另一个不工作并返回 null 的类访问它的值。谁能解释一下为什么。提前致谢。

public class StaticHolder {
private static String hello;

public static void ini() {
hello = "Hello World";
}

public static String getHello() {
return hello;
}

public static void setHello(String hello) {
StaticHolder.hello = hello;
}
}

class StaticInitializer {
public static void main(String[] args) {
StaticHolder.ini();
while (true) {
Thread.sleep(1000);
}
}
}

public class Application {
public static void main(String[] args) {
System.out.println(StaticHolder.getHello());
}
}

最佳答案

static并不意味着这个值永远存在!

它仅适用于当前的java session

在命令行调用java命令会启动一个新的java session ,其中的值需要再次初始化。

<小时/>

Actually I have a daemon thread which does the initialization and stays alive.And I have another stand alone java program which tries to get the value.

在不知道涉及其他代码的情况下,我的猜测是您没有建立进程间通信

最简单的方法是您“守护程序”打开服务器套接字,然后您的“独立java程序”连接到它并通过它查询所需的数据。

关于java - 类完成后静态变量变为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com