繁体   English   中英

不是所有Applet类实例都共享静态属性?

[英]Static attribute not shared by all Applet class instances?

我有一个Applet子类(游戏客户端),其所有实例都必须引用另一个非applet类(称为Auxillary )的单个实例。
我以为这只是声明属性为static的情况,但是似乎在每个applet实例的构造函数中,都为该Applet实例创建了一个新的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);

    }

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

辅助的

public class Auxillary {

    public int counter;

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

每次创建新的Applet实例时,我期望看到的打印数量越来越多。 相反,它一直为1。
我究竟做错了什么?

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

所以; 我该如何实现?
谢谢

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM