Java使用自己的实例创建多个内部类对象

时间:2018-03-24 11:38:58

标签: java class object

我用类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都有它自己的参数实例,但似乎它被覆盖直到创建了激光对象。 有什么方法可以解决这个问题吗? 感谢

2 个答案:

答案 0 :(得分:2)

永远不要那样做。您在构造函数中写入静态变量的值。显然,静态变量是按自然顺序初始化的,因此写入instance变量的最后一个值是来自test3的变量。

要解决此问题,您必须从变量static中删除instance修饰符。

答案 1 :(得分:0)

问题是您已将String instance声明为static。这意味着它对于整个类只存在一次,而不是每个实例存在一次。删除static,它应该按预期工作。