相关疑难解决方法(0)

Java初始化顺序问题,静态vs实例字段

以下程序打印:

my name is:null

my name is:null

Someclass static init
Run Code Online (Sandbox Code Playgroud)

首次加载类时的AFAIK静态块和字段始终首先被初始化,实例块和字段被初始化.因此变量"objectName1"和"objectName2"应首先初始化,实例变量"list"second ...但是输出明显与此理论相矛盾...任何人都可以解释程序行为(我不是在寻找对它的批评设计本身btw)?

import java.util.ArrayList;
import java.util.List;

public class Main2{
    public static void main (String[] args){
        SomeClass.getInstance();
    }
}

class SomeClass {
    private static final SomeClass instance = new SomeClass();

    public static SomeClass getInstance(){
        return instance;
    }

    static {
        System.out.println ("Someclass static init");
    }
    private  static String objectName1  ="test1";
    private  static String objectName2  ="test2";

    @SuppressWarnings("serial")
    private  List<SomeObject> list=
        new ArrayList<SomeObject> ()  { {
 add (new SomeObject(objectName1));
 add (new SomeObject(objectName2));
    }};
} …
Run Code Online (Sandbox Code Playgroud)

java

7
推荐指数
1
解决办法
2340
查看次数

在Java中使用{}块有什么用处

你好朋友在Java类中只有一个块有什么用

public class StaticExample {
  {
    System.out.println("I m here...");
  }
}
Run Code Online (Sandbox Code Playgroud)

java

-2
推荐指数
2
解决办法
2411
查看次数

标签 统计

java ×2