如果我有这样的班级结构
public class Foo{
//declaring fields and methods
Foo(int k){
Bar.a = k;
}
public class Bar{
public final static int a;
}
}
如果我创建了许多 Foo 实例,类 Bar 中的静态字段如何作用?我的意思是,所有 Foo 对象都是同一个实例,还是每个实例都有不同的静态字段?
如果我有这样的班级结构
public class Foo{
//declaring fields and methods
Foo(int k){
Bar.a = k;
}
public class Bar{
public final static int a;
}
}
如果我创建了许多 Foo 实例,类 Bar 中的静态字段如何作用?我的意思是,所有 Foo 对象都是同一个实例,还是每个实例都有不同的静态字段?
我认为内部类不能有静态成员,因为它需要外部类的实例。
代码不会编译,编译器会发出
COMPILATION ERROR :
-------------------------------------------------------------
... error: Illegal static declaration in inner class blah.Foo.Bar
1 error
您需要有一个static内部类才能编译此代码。
你的问题不正确。只是问一些不存在的东西是没有意义的。在这种情况下,唯一的可能性是制作 inner class static。然后对于外部类的每个实例,您都有一个内部类的静态实例。结果是这个内部类的一个静态变量。