Int从公共到静态

时间:2012-04-28 14:18:00

标签: java static public

在您阅读我的问题之前,请知道我的英文不好

public Name()
{
   ID = 1;
   loadOptions();
}

private void loadOptions
{
   // code
   if (as[0].equals("ID"))
   {
      ID = Integer.parseInt(as[1]);
   }
   // more code
}

static
{
   ID1 = ID;
}

ID1为0,但我希望它是Integer.parseInt(as[1]); ...请帮助我!

2 个答案:

答案 0 :(得分:0)

有两种方法可以实现这一目标:

  1. 解析为[1]后,也将结果分配给ID1
  2. 将as数组设为静态,并在初始化ID1
  3. 之前加载它

答案 1 :(得分:0)

我认为你可能缺乏该语言的一些基础知识。

静态初始化块仅在第一次引用类时运行。

每次实例化类的实例时都会运行构造函数。

我假设ID1是一个静态变量,你试图在构造函数有机会执行之前运行的静态区域初始化它。

仅仅因为代码按特定顺序编写并不意味着它按该顺序运行。

假设你真的想将ID1设置为任何ID,你必须这样做

public Name()
{
   ID = 1;
   loadOptions();
   ID1 = ID;
}

当然,你没有构造Name的实例,ID1在创建实例之前将保持为0