java - 静态变量初始化的区别

标签 java static initialization static-methods

<分区>

这是工作正常的代码,

class Temp6{

public static Hello var1 = haa();

private static Hello haa(){
  Hello ha1 = new Hello();
  return ha1;
}

public static void main(String[] args){}

}

class Hello{
int h = 10;
}

上面提到的代码什么都不做,它只是从 haa() 的返回类型中分配 var1方法。

我又试了一次,我不明白为什么会出错,有人可以帮我找出有什么区别以及原因是什么。

这是导致此错误的原因: error: <identifier> expected var1 = haa(); ^ 1 error 代码:

class Temp7{

public static Hello var1;
var1 = haa();

private static Hello haa(){
   Hello ha1 = new Hello();
   return ha1;
}

public static void main(String[] args){
}
}

class Hello{
 int h = 10;
}

最佳答案

您需要将静态初始值设定项放在 static { ... } block 中:

static {
    var1 = haa();
}

关于java - 静态变量初始化的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40828224/

相关文章:

c++ - 在定义(.cpp 文件)中初始化 static float constexpr 成员是否可能

c++ - 为什么 const char INITIAL ='G' 不是赋值语句?

c - C 语言是否只为 void 指针指定任何隐式初始化?

iphone sqlite 静态链接?

iphone - 为什么我们使用 cellIdentifier?

java - ApplicationContext ctx = 新的 FileSystemXmlApplicationContext 错误

java - 在 Hibernate Envers 中将附加数据传递给 Custom RevisionEntity 的方法?

c++ - qt - 在父窗口/小部件类中初始化子小部件的目的是什么?

java - 后台多部分请求

java - Avro ReflectDatumWriter 中的 NullPointerException