web应用程序中Java静态成员的作用域

web应用程序中Java静态成员的作用域,java,static,Java,Static,Java静态变量是否在同一web应用程序的实例之间共享 class MyClass { private static SomeClass myStaticObject = new SomeClass(); } 如果web应用程序使用MyClass,并且该应用程序的多个实例在web服务器上运行,则myStaticObject是否多次初始化?通常是。大多数容器将为每个web应用程序提供单独的类加载器。这将导致该类在多个应用程序使用时被多次加载,从而导致静态变量的多个实例 说明供参考的文件:

Java静态变量是否在同一web应用程序的实例之间共享

class MyClass
{
    private static SomeClass myStaticObject = new SomeClass();
}

如果web应用程序使用MyClass,并且该应用程序的多个实例在web服务器上运行,则myStaticObject是否多次初始化?

通常是。大多数容器将为每个web应用程序提供单独的类加载器。这将导致该类在多个应用程序使用时被多次加载,从而导致静态变量的多个实例

说明供参考的文件:

在运行时,几个引用类型 可以使用相同的二进制名称 由不同的设备同时加载 类装入器。这些类型可能是,也可能是 不代表相同的类型 宣言。即使有两种这样的类型 表示相同的类型声明, 它们被认为是不同的


通过推断,静态变量将存在多个实例,除非父类加载器只加载一次类,而其他任何类加载器都不会加载这些类。

我不太明白在
MyClass
中使用
私有静态变量的意义。如果它是
private
,则不能从定义它的类外部将其作为类变量进行访问。如果您只想让其他类通过getter方法访问此变量,则应删除
static
关键字。

使用
私有静态
变量的用例很多。其中之一就是保存下一个可用的对象ID。