當嵌套類與封閉類的靜態成員共享名稱時,是否有任何方法從封閉類訪問嵌套類的靜態成員?例如:當嵌套類與封閉類的靜態成員共享一個名稱時,訪問嵌套類的靜態成員?
package a;
class a {
static Object b;
static class b {
static Object foo;
}
static Object needAccessToFoo;
static {
// can I access foo?
}
}
類b
(相對於所述構件b
)可以當經由a
(或[b.]b.a
)被用作類型來訪問。而foo
可以用作爲這樣的嵌套類b
的實例訪問:
static {
[a.][a.]b bar = new b();
needAccessToFoo = bar.foo;
}
然而,由於b
是嵌套類而不是內部類,它留下一個懷疑是否有不通過b
(bar
引用的對象)的實例靜態引用foo
的正確方法。更不用說通過一個對象訪問一個靜態成員通常被認爲是不好的做法。
我得到「java:class a已經在軟件包中定義了」爲什麼你會爲一個類使用小寫名字? –
@PeterLawrey我改變了例子編譯。 – dcow
你可以改變它,所以它符合Java編碼約定,類爲'B',字段爲'b'? ;) –