static静态代码块中给静态成员变量赋值坑

public class testdemo {
    private static final String name;

    static {
        name = "string";
        try {
//           name="string";
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        System.out.println(name);
    }
}

先看上述代码,是可以直接运行无异常的,但习惯的是将try...catch...范围扩大,进而将name="string"也写入try中

但编译器就会认为这段代码会发生异常,从而没有将name进行赋值,会提示name需要初始化,这是一个坑

你可能感兴趣的:(填过的坑)