【发布时间】:2013-03-16 10:46:28
【问题描述】:
如果我有这样的类结构
public class Foo{
//declaring fields and methods
Foo(int k){
Bar.a = k;
}
public class Bar{
public final static int a;
}
}
如果我创建了许多 Foo 实例,类 Bar 中的静态字段如何作用?我的意思是,它是所有 Foo 对象的同一个实例,还是每个实例都有不同的静态字段?
【问题讨论】:
-
不,所有实例共享同一个静态字段,不会每个实例都有静态字段。
-
您的代码无法编译。非静态嵌套类不能包含静态字段。
-
实际上,如果该字段也是最终字段(这将使其成为常数),他们可以,但我只是很挑剔:)
-
更新了添加最终修饰符的问题。现在怎么样了?
-
LearnedfromMistake 和 Pshemo 是正确的,您不能在非静态内部类上拥有 modifiable(非最终)静态字段。您的代码仍然无法编译,因为您是:1)没有初始化(现在是最终的)字段
a,2)尝试为最终字段分配新值。
标签: java static inner-classes