[英]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.