0

我有一个 Applet 子类(一个游戏客户端),它的所有实例都必须引用另一个非 Applet 类(称为Auxillary)的单个实例。
我认为这只是将属性声明为静态的情况,但似乎在每个小程序实例的构造函数中,都为该小程序实例创建了一个新Auxillary实例(我知道我在整个示例中都拼错了 Auxiliary.. .)

这是一个简单的例子;

客户

public class Applet extends JApplet {

    // don't yet know Auxillary constructor args
    public static Auxillary global;

    public Applet() {

        // now I know args
        if (global == null)
            global = new Auxillary("arbitrary", "arguments");

        // test global
        global.counter ++;
        System.out.println(global.counter);

    }

请注意,我保证 Auxillary 构造函数的参数对于每个 Applet 实例都是相同的。

辅助

public class Auxillary {

    public int counter;

    public Auxillary (Object a, Object b) {
        counter = 0;
    }
}

每次我创建一个新的 Applet 实例时,我都希望看到越来越多的打印数量;相反,它一直是 1。
我做错了什么?

这个 SO 问题让我相信我的 Applet 实例可以以某种方式共享一个属性实例。
此 Java Doc使用 static 关键字进行降级,但我将其解释为“不同 Applet 子类的不同实例”(并且我的 Applet 实例不会显示在同一页面上)

所以; 我怎样才能实现它?
谢谢

4

1 回答 1

0

只有同一 JVM 中的 Applet 实例可以共享静态属性(其他实例是完全独立的程序......)。
因此,浏览器(如 Chrome)中的多个选项卡将共享 JVM,并且这些选项卡中的所有 Applet 实例将共享静态属性,但不会跨不同的浏览器或机器。

于 2013-05-29T05:30:09.543 回答