我用类Test的3个内部对象创建了一个类Test。
pblic class Test
{
public static final Test test1=new Test("a");
public static final Test test2=new Test("b");
public static final Test test3=new Test("c");
//instance
public static String instance;
public Test(String init)
{
instance=init;
}
.
.
.
到目前为止这是有效的。 我有一个enum文件,我这样做:
public enum myEnum
{
APPLE{{this.enumtest=Test.test1}};
Test enumtest;
.
.
.
当我调用enumtest.toString时,我收到test3的字符串而不是test1。 我认为每个内部类Object都有它自己的参数实例,但似乎它被覆盖直到创建了激光对象。 有什么方法可以解决这个问题吗? 感谢
答案 0 :(得分:2)
永远不要那样做。您在构造函数中写入静态变量的值。显然,静态变量是按自然顺序初始化的,因此写入instance
变量的最后一个值是来自test3
的变量。
要解决此问题,您必须从变量static
中删除instance
修饰符。
答案 1 :(得分:0)
问题是您已将String instance
声明为static
。这意味着它对于整个类只存在一次,而不是每个实例存在一次。删除static
,它应该按预期工作。