首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JAVA中使用静态全局变量

如何在JAVA中使用静态全局变量
EN

Stack Overflow用户
提问于 2010-11-28 06:16:32
回答 2查看 3.6K关注 0票数 0

我正在开发一个Java程序,我有两个不同的类,需要彼此共享变量。为此,我创建了第三个类,其中包含这些共享变量。基本上,第一类在第三类中有自己的标志,第二类在第三类中有自己的标志。当然,我还在其他类的定义中添加了“扩展ThirdClass”。

我的问题是,当我在第一个类的main方法中更改第一个类的flag的值时,第二个类无法看到这种变化。也就是说,它看到具有初始值的标志。

我认为这是关于静态变量的。但我不知道解决方案。

实际上,我有两台服务器和多个客户端。我正在尝试为我的分布式系统课程模拟这些服务器的不同情况。每台服务器都有自己的数据表,该数据表与其他服务器同步。通过模拟,我的意思是服务器可能关闭或启动,当客户端尝试连接到关闭的服务器时,我需要将其定向到其他服务器。因此,在客户端和服务器之间,我需要发送信息。

如何在两个类之间共享变量,并在不丢失先前修改的情况下轻松地由任何类修改这些变量?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-11-28 06:19:06

编辑--此答案是针对问题的先前版本,其中不包括有关客户端和多个服务器的任何内容。这个答案是关于在类的实例之间共享数据的。

有很多方法可以做到这一点。如果我理解您在第一段中概述的方法,您不希望class1和class2扩展class3。您希望它们都有一个对同一class3实例的引用。如果它们共享对同一对象的引用,则在该对象上更改的值将反映在两个类中。如果他们像你说的那样扩展class3,那么class1和class2都将拥有class3的属性,但它们不会共享任何数据。如果类3有一个属性

代码语言:javascript
运行
复制
  Object value;

那么class1和class2的实例将分别引用不同的“value”实例。

你需要理解类和对象实例之间的关系,以及扩展类的意义。

请注意,在实际程序中,这并不是在对象之间共享信息的好方法。你可能会遇到各种各样的并发问题。对于使用使用静态字段实现的全局机制的解决方案也是如此。

要使用静态字段执行此操作,请执行以下操作:

代码语言:javascript
运行
复制
class SharedData {
    public static Object shared1;
}

然后,在class1和class2实例中,您可以访问

代码语言:javascript
运行
复制
SharedData.shared1

用于set或get。

但我不会在任何专业背景下做这样的事情。

票数 4
EN

Stack Overflow用户

发布于 2010-11-28 06:24:16

如果有意义的话,你可以使用静态来解决这个问题。当一个成员被声明为类的静态成员时,每个访问该成员的人都会引用该变量的相同实例,但这听起来并不像你想要的。

如果您希望某些数据由两个类共享,则可以将数据放在第三个类中,当您创建该第三个类的实例时,请确保其他两个类只需访问它。

你能概述一下你正在努力实现的目标吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4294214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档