相关疑难解决方法(0)

多个静态变量实例

我正在尝试使用不同的类加载器来加载特定的类,并查看该类中的静态变量是否可以具有不同的实例.

基本上,我正在尝试编写Stephen C在此答案中提到的代码.

这是我的课程:

CustomClassLoader.java

class CustomClassLoader extends ClassLoader
{
    public Class loadClass(String classname)  throws ClassNotFoundException {
        return super.loadClass(classname, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

Test.java(包含驱动程序)

class Test {
        public static void main(String[] args) throws Exception {
                CustomClassLoader c1 = new CustomClassLoader();
                CustomClassLoader  c2 = new CustomClassLoader();
                Class m1, m2;

                m1 = c1.loadClass("A");
                m2 = c2.loadClass("A");

                m1.getField("b").set(null, 10);

                System.out.println(m1.getField("b").get(null));
                System.out.println(m2.getField("b").get(null));
        }

}
Run Code Online (Sandbox Code Playgroud)

A.java(包含静态变量)

class A {
        public static int b = 5;
}
Run Code Online (Sandbox Code Playgroud)

当我运行Test类时,我得到以下输出:

$ java Test
10
10
Run Code Online (Sandbox Code Playgroud)

我希望输出为10和5.如何让代码创建我的静态变量的两个实例?

注意:我这样做只是为了实验和学习 …

java reflection static classloader

13
推荐指数
2
解决办法
6801
查看次数

是否可能有多个静态变量实例

静态变量只有实例(即它们是类的一部分).例如:Math.pi

有没有办法可以有多个静态变量实例?我听说有类似的东西吗?

java static

6
推荐指数
1
解决办法
6185
查看次数

标签 统计

java ×2

static ×2

classloader ×1

reflection ×1