如果我修改一个类的静态变量,它是否会被该类的前一个实例共享?

时间:2016-11-07 14:15:41

标签: java static

如果我修改了一个类的静态变量,它会被该类的前一个实例共享,或者只被该类的新实例共享。

我只是在做RMI,我有一个静态变量的类,我注册到RMI注册表。如果我通过调用RMI对象来更新静态变量,它会更新,但是如果我按类名更新它,那么从RMI对象中检查变量的值,它给我的旧值。

1 个答案:

答案 0 :(得分:1)

如果类A具有静态变量s,则给定JVM中的所有A实例将共享该静态变量。 JLS保证了这一点。

您所看到的可能解释包括:

  • 您已设法使用不同的类加载器在JVM中多次加载类A。就类型系统而言,这将为您提供不同的A类,并且每个类将具有不同的静态变量。
  • 您实际上正在与“by RMI”和“by classname”中的不同JVM中的A实例进行对话。案例。不同JVM中的类A不共享静态变量。
  • 编辑/构建/部署/运行周期的各种问题。