我有一个Applet子类(游戏客户端),其中所有实例都必须引用另一个非applet类的单个实例(称为Auxillary
)。
我认为这只是一个声明属性为静态的情况,但似乎在每个applet实例的构造函数中,为该Applet实例创建了一个新的Auxillary
实例(我知道我是拼错的辅助所有通过这个例子......)
这是一个简单的例子;
客户端
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实例都是相同的。
Auxillary
public class Auxillary {
public int counter;
public Auxillary (Object a, Object b) {
counter = 0;
}
}
每次我创建一个新的Applet实例时,我都希望看到越来越多的打印;相反,它一直是1.
我究竟做错了什么?
This SO question说服我,我的Applet实例可以某种方式共享一个属性实例 This Java Doc使用static关键字降级,但我将其解释为“不同Applet子类的不同实例”(并且我的Applet实例不会显示在同一页面上)
因此;我该怎样才能实现呢? 感谢
答案 0 :(得分:0)
只有同一JVM中的Applet实例才能共享静态属性(其他实例完全是独立的程序......) 因此,浏览器中的多个标签(如Chrome)将共享JVM,这些标签中的所有Applet实例将共享静态属性,但不会在不同的浏览器或计算机上共享。