没听懂你的意思。你是不是说 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当然应该修改
其实就是想做一个配置信息初始化工作。 final保护可以在第一次用一个方法赋值么?
当然可以,如果是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 = ....; }
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当然应该修改
其实就是想做一个配置信息初始化工作。 final保护可以在第一次用一个方法赋值么?
比如
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 = ....;
}