一个类中的静态属性被赋值一次。 其他类是否可以在程序 被停止前。一直使用这个类中被第一次静态赋值的属性结果?

解决方案 »

  1.   

    没听懂你的意思。你是不是说
    public class Config {
      public static int GLOBAL_VALUE = 100;
    }public class Worker {
      public void foo() {
        int value = Config.GLOBAL_VALUE;
        while (condition) {
          // do something with value
        }
      }
    }如果真的没人再去写那个GLOBAL_VALUE的话,没问题。但是这样建议用final或者其他方式保护
    如果有人写,你worker当然应该修改
      

  2.   


    其实就是想做一个配置信息初始化工作。 final保护可以在第一次用一个方法赋值么?
      

  3.   

    当然可以,如果是non-static,可以在域声明时候初始写死的,或者调用方法,也可以在构造函数中
    比如
    class A {
    private final int x = 100;
    private final int y = initY(); // 当然,如果这个方法声明抛出异常(比如throws Exception),那只能放到构造函数
    private final int z;A() {
      z = ....;
    }}
    如果static,可以在声明时,也可以放入static段private static final int x = 100;private static final int y = initY(); // 这里方法必须是static,同样如果碰到throws Exception也只能进static段private static final int z;
    static {
      z = ....;
    }
      

  4.   

    final可以在执行顺序在构造方法之前前包括构造方法赋值。