Java使用自己的实例创建多个内部类对象
我用类测试的3个内部对象创建了一个类测试Java使用自己的实例创建多个内部类对象,java,class,object,Java,Class,Object,我用类测试的3个内部对象创建了一个类测试 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(Strin
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;
}
.
.
.
到目前为止,这是可行的。
然后我有一个枚举文件,我在其中执行以下操作:
public enum myEnum
{
APPLE{{this.enumtest=Test.test1}};
Test enumtest;
.
.
.
当我调用enumtest.toString时,我收到的是test3而不是test1的字符串。
我认为每个内部类对象都有自己的参数实例,但似乎在创建lase对象之前,它都会被覆盖。
有没有办法解决这个问题?
谢谢,永远不要那样做。在构造函数中写入静态变量的值。显然,静态变量是按自然顺序初始化的,因此写入
实例
变量的最后一个值是test3
中的值
要解决此问题,必须从变量
实例中删除static
修饰符切勿这样做。在构造函数中写入静态变量的值。显然,静态变量是按自然顺序初始化的,因此写入实例
变量的最后一个值是test3
中的值
要解决此问题,您必须从变量实例中删除静态
修饰符,问题是您已将字符串实例声明为静态
。这意味着它在整个类中只存在一次,而不是每个实例都存在一次。删除静态
,它应该可以正常工作。问题是您已将字符串实例
声明为静态
。这意味着它在整个类中只存在一次,而不是每个实例都存在一次。删除静态
,它应该按预期工作。不要使用,它有许多微妙之处,是一个肮脏的黑客,在代码中没有位置。另外,可变的枚举
是anthema!在enum
中,每个变量都应该是final
。千万不要使用,它有许多微妙之处,是一个肮脏的黑客,在代码中没有位置。而且可变enum
是anthema!每个变量都应该是enum
中的final
。谢谢。我更改了变量并删除了static,所以现在它可以工作了。谢谢。我更改了变量并删除了static,所以现在它可以工作了。