Java 公共嵌套类中的静态final字段
我有这样的代码:Java 公共嵌套类中的静态final字段,java,eclipse,Java,Eclipse,我有这样的代码: public class Foo { public class Bar implements Parcelable { public static final Parcelable.Creator<Type> CREATOR = new Parcelable.Creator<Type>() { @Override ..
public class Foo {
public class Bar implements Parcelable {
public static final Parcelable.Creator<Type> CREATOR =
new Parcelable.Creator<Type>() {
@Override
....
}
}
}
请告诉我是什么?我认为这是因为我有一个嵌套类,但我不知道如何纠正错误。内部类不能有静态方法。。。如果您想拥有它,还需要将Bar定义为static
否则,字段必须声明为非静态。尽管我不知道为什么,Java禁止内部类中的静态字段和方法。解决这个问题的唯一方法是声明一个静态的内部类;当然,也可以将嵌套类中的字段设置为非静态。内部类(非静态嵌套类)不能有任何静态方法。因为
内部类与其外部类的实例隐式关联,它本身不能定义任何静态方法。
对于外部类Foo
,您可以访问静态方法test()
,如下所示:
Foo.test();
Foo.Bar.innerTest();
对于静态内部类Bar
,可以访问其静态方法innerTest()
,如下所示:
Foo.test();
Foo.Bar.innerTest();
但是,如果
Bar
不是static
,那么现在就没有静态方式来引用方法innerTest()
。非静态内部类与其外部类的特定实例相关联。我认为将Bar定义为静态不会允许在其中包含静态变量。但是,如果Bar不是静态的,那么现在就没有静态的方法来引用innerTest()方法了。但是为什么我们需要静态的方法来引用这个方法呢?我们可以像newfoo().Bar.innerTest()
那样引用它。为什么不呢?