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

如何在JAVA中使用静态全局变量,java,inheritance,static,Java,Inheritance,Static,我正在开发一个Java程序,我有两个不同的类需要彼此共享变量。为此,我创建了第三个类,它包含这些共享变量。基本上,第一类在第三类中有自己的旗帜,第二类在第三类中有自己的旗帜。当然,我在其他类的定义中添加了“扩展第三类” 我的问题是,当我在第一个类的主方法中更改第一个类的标志值时,第二个类无法看到此更改。也就是说,它看到具有初始值的标志 我认为这是关于静态变量的。但我不知道解决办法 实际上,我有两台服务器和多个客户端。在我的分布式系统课程中,我试图模拟这些服务器的不同情况。每台服务器都有自己的数据

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

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

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


实际上,我有两台服务器和多个客户端。在我的分布式系统课程中,我试图模拟这些服务器的不同情况。每台服务器都有自己的数据表,并与其他服务器同步。通过模拟,我的意思是服务器可能处于关闭状态,也可能处于打开状态,当客户机试图到达服务器下方时,我需要将其指向其他服务器。所以,在客户端和服务器之间,我需要发送信息

如何在两个类之间共享变量,并通过任何类轻松修改这些变量而不丢失以前的修改

谢谢。

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

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

  Object value;
然后class1和class2的实例将分别引用“value”的单独实例

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

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

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

class SharedData {
    public static Object shared1;
}
然后在class1和class2实例中,您可以访问

SharedData.shared1
无论是设定还是设定

但是我不会在任何类型的专业环境中做这样的事情。

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

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

  Object value;
然后class1和class2的实例将分别引用“value”的单独实例

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

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

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

class SharedData {
    public static Object shared1;
}
然后在class1和class2实例中,您可以访问

SharedData.shared1
无论是设定还是设定


但是我不会在任何类型的专业环境中做这样的事情。

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

如果希望某些数据由两个类共享,可以将数据放在第三个类中,并且在创建该第三个类的实例时,确保其他两个类可以访问该数据


你能概述一下你想要完成什么吗?

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

如果希望某些数据由两个类共享,可以将数据放在第三个类中,并且在创建该第三个类的实例时,确保其他两个类可以访问该数据


你能概述一下你想完成什么吗?

整个方法都失败了。你需要学习OOP,然后重新探讨你试图解决的问题。这是家庭作业吗?如果是,请贴上标签。整个方法都被破坏了。你需要学习OOP,然后重新探讨你试图解决的问题。这是家庭作业吗?如果是,请贴上标签。实际上,我有两台服务器和多个客户端。在我的分布式系统课程中,我试图模拟这些服务器的不同情况。每台服务器都有自己的数据表,并与其他服务器同步。通过模拟,我的意思是服务器可能处于关闭状态,也可能处于打开状态,当客户机试图到达服务器下方时,我需要将其指向其他服务器。所以,在客户端和服务器之间,我需要发送信息。实际上,我有两个服务器和多个客户端。我试图模拟这些服务的不同情况