这是可以正常运行的代码,
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;
}
答案 0 :(得分:1)
您需要将静态初始值设定项放在static { ... }
块中:
static {
var1 = haa();
}
答案 1 :(得分:0)
在您的情况下,有两种方法可以初始化静态变量。
第一个解决方案:直接使用新关键字与声明变量相同的行。
class Temp6 {
public static Hello var1 = new Hello();
}
第二个解决方案:将静态初始化程序放在静态初始化程序块中。当我们需要复杂的初始化程序时这样做。 (调用另一种方法,准备一些参数......)
class Temp6 {
public static Hello var1;
static {
var1 = haa();
}
private static Hello haa(){
Hello ha1 = new Hello();
return ha1;
}
}