![](/img/trans.png)
[英]can I read public static final field inside a nested public static abstract class in Java
[英]static final field in public nested class
我有這樣的代碼:
public class Foo {
public class Bar implements Parcelable {
public static final Parcelable.Creator<Type> CREATOR =
new Parcelable.Creator<Type>() {
@Override
....
}
}
}
Eclipse 說:
The field CREATOR cannot be declared static in a non-static inner type, unless
initialized with a constant expression
請告訴我是什么? 我認為這是因為我有一個嵌套類,但我不知道如何糾正錯誤。
內部類(非靜態嵌套類)不能有任何靜態方法。 因為
An inner class is implicitly associated with an instance of its outer class, it cannot define any static methods itself.
對於外部類Foo
,您可以像這樣訪問靜態方法test()
:
Foo.test();
對於靜態內部類Bar
,您可以像這樣訪問其靜態方法innerTest()
:
Foo.Bar.innerTest();
但是,如果Bar
不是static
,則現在沒有引用方法innerTest()
靜態方法。 非靜態內部類與其外部類的特定實例相關聯。
內部類不能有靜態方法......如果你想擁有它,你還需要將 Bar 定義為靜態方法。
否則,該字段必須聲明為非靜態的。
雖然不知道為什么,Java 禁止內部類中的靜態字段和方法。 解決此問題的唯一方法是聲明靜態內部類; 或者當然您可以使嵌套類中的字段為非靜態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.