gpt4 book ai didi

java - Java中静态字段的确切含义是什么?

转载 作者:IT老高 更新时间:2023-10-28 20:55:13 27 4
gpt4 key购买 nike

我想在同一类对象的不同实例之间共享一个对象。

从概念上讲,当我的程序运行时,A 类的所有对象都访问 B 类的同一个对象。

我看到 static 是系统范围的,不鼓励使用它。这是否意味着如果我在同一个 JVM 上运行另一个程序来实例化 A 类的对象,这些对象可能会访问与在前一个程序中访问的对象相同的 B 对象?

使用静态字段通常有哪些缺陷?

是否有任何替代方案(不需要大量实现)?

最佳答案

静态并不完全意味着“由所有实例共享” - 它的意思是“根本与特定实例无关”。换句话说,您无需创建 任何 个实例即可获得 A 类中的静态字段。

至于在同一个 JVM 中运行两个程序 - 这实际上取决于您所说的“运行两个程序”是什么意思。静态字段有效地与类对象相关联,而类对象又与类加载器相关联。因此,如果这两个程序使用单独的类加载器实例,您将拥有两个独立的静态变量。如果他们都使用相同的类加载器,那么只有一个,所以他们会看到彼此的变化。

至于替代方案 - 有多种选择。一种是将对“共享”对象的引用传递给您创建的每个需要它的对象的构造函数。然后它将需要存储该引用以供以后使用。与静态方法相比,这可能会有点麻烦并且会占用更多内存,但它确实便于测试。

关于java - Java中静态字段的确切含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797964/

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