Tag: 静态初始化

Java:何时静态初始化块有用?

static块中的初始化有什么区别: public class staticTest { static String s; static int n; static double d; static { s = "I'm static"; n = 500; d = 4000.0001; } … 和个人静态初始化: public class staticTest { static String s = "I'm static"; static int n = 500; static double d = 4000.0001; ….

Java enum反向查找最佳实践

我在博客上看到,在Java枚举中使用getCode(int)进行“反向查找”是一种合理的方法: public enum Status { WAITING(0), READY(1), SKIPPED(-1), COMPLETED(5); private static final Map<Integer,Status> lookup = new HashMap<Integer,Status>(); static { for(Status s : EnumSet.allOf(Status.class)) lookup.put(s.getCode(), s); } private int code; private Status(int code) { this.code = code; } public int getCode() { return code; } public static Status get(int code) { return lookup.get(code); } } 对我来说,静态映射和静态初始化器都看起来是一个坏主意,我首先想到的是将查找编码为: […]

Java中运行静态/实例初始化块的顺序是什么?

假设一个项目包含几个类,每个类都有一个静态初始化块。 这些块以什么顺序运行? 我知道在一个类中,这些块按照它们出现在代码中的顺序运行。 我已经读过,在不同的类中是一样的,但是我写的一些示例代码不同意这个。 我用这个代码: package pkg; public class LoadTest { public static void main(String[] args) { System.out.println("START"); new Child(); System.out.println("END"); } } class Parent extends Grandparent { // Instance init block { System.out.println("instance – parent"); } // Constructor public Parent() { System.out.println("constructor – parent"); } // Static init block static { System.out.println("static – parent"); […]

为什么静态初始化块中不允许有一个合格的static finalvariables?

情况1 class Program { static final int var; static { Program.var = 8; // Compilation error } public static void main(String[] args) { int i; i = Program.var; System.out.println(Program.var); } } 案例2 class Program { static final int var; static { var = 8; //OK } public static void main(String[] args) { System.out.println(Program.var); } } […]