-2

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

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]);……请帮帮我!

4

2 回答 2

0

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

  1. 解析为 [1] 后,将结果也分配给 ID1
  2. 将 as 数组设为静态,并在初始化 ID1 之前加载它
于 2012-04-28T14:31:39.667 回答
0

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

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

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

我假设 ID1 是一个静态变量,并且您试图在构造函数有机会执行之前运行的静态区域中对其进行初始化。

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

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

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

当然,如果您不构造 Name 的实例,ID1 将保持为 0,直到创建实例

于 2012-04-28T14:32:37.847 回答