gpt4 book ai didi

java - 为什么这个 Java 静态字段为空?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:17 26 4
gpt4 key购买 nike

public class StaticTest {

private static String a;
private static String b = "this is " + a;

public static void main(String[] args) {
a = "test";

System.out.println(b); // prints "this is null"
}

}

我对 b 的值感到困惑。我认为结果应该是“this is test”,但结果是“this is null”。为什么?

最佳答案

其他人已经解释了为什么它以这种方式工作。

但是,有一些方法可以在您引用它时计算该值。

private static String a;
private static Supplier<String> bSupplier = ()->"this is " + a;

public static void main(String[] args){
a = "test";
System.out.println(bSupplier.get()); //Prints "this is a test"
}

当您调用 bSupplier.get() 时,会计算该值。如果您更改 a 的值,并再次调用它,该值将反射(reflect)新值。

这不是您应该经常做的事情,但了解它很有用。

关于java - 为什么这个 Java 静态字段为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436794/

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