静态不是完全意味着“由所有实例共享”,而是“完全不与特定实例相关”。换句话说,您无需创建任何实例即可获得类A中的静态字段。
至于在同一个JVM中运行两个程序,这实际上取决于您“运行两个程序”的含义。静态字段有效地与类对象相关联,而类对象又与类加载器相关联。因此,如果这两个程序使用单独的类加载器实例,则将有两个独立的静态变量。如果他们都使用相同的类加载器,那么将只有一个,因此他们将看到彼此的更改。
至于替代方案-有多种选择。一种是将对“共享”对象的引用传递给您创建的每个需要它的对象的构造函数。然后它将需要存储该引用以供以后使用。与静态方法相比,这可能会有些痛苦并且占用更多的内存,但是确实可以简化测试。



