一个很基础的问题。关于静态属性

lcaminy 2012-04-18 12:09:49
一个类中的静态属性被赋值一次。 其他类是否可以在程序 被停止前。一直使用这个类中被第一次静态赋值的属性结果?
...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdojqy1122 2012-04-18
  • 打赏
  • 举报
回复
final可以在执行顺序在构造方法之前前包括构造方法赋值。
shine333 2012-04-18
  • 打赏
  • 举报
回复
当然可以,如果是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 = ....;
}
lcaminy 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

没听懂你的意思。

你是不是说
Java code
public class Config {
public static int GLOBAL_VALUE = 100;
}

public class Worker {
public void foo() {
int value = Config.GLOBAL_VALUE;
while (condition) {……
[/Quote]

其实就是想做一个配置信息初始化工作。 final保护可以在第一次用一个方法赋值么?
shine333 2012-04-18
  • 打赏
  • 举报
回复
没听懂你的意思。

你是不是说
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当然应该修改
lcaminy 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

没听懂你的意思。

你是不是说
Java code
public class Config {
public static int GLOBAL_VALUE = 100;
}

public class Worker {
public void foo() {
int value = Config.GLOBAL_VALUE;
while (c……
[/Quote]

疑问解决了,感谢了。!!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧