在Java中訪問定義的類之外的枚舉應直接使用還是必須使用類名稱作爲前綴?如何訪問定義它的類之外的枚舉
0
A
回答
2
如果您導入它們,您可以直接訪問它們。否則,您需要使用封閉的類名作爲限定符。
A.java:
class A {
enum E { . . . }
. . .
}
B.java(同一個包A.java在這個例子中):
import A.E;
class B {
E eThing; // works because A.E was imported
A.E eThing2; // always works provided A is known (in same package here)
. . .
}
當然,這個答案沒有解決的可訪問性規則的問題,這仍然適用。 (例如,您不能從另一個類訪問private
枚舉。)
如果B.java位於不同的包中,則不需要import A;
即可擁有import A.E;
。如果您需要使用B
的代碼中的(非限定)名稱A
,則只需要導入A
。
A
的子類當然繼承A.E
,因爲E
是A
的成員;他們不需要任何直接使用E
的導入(只要授予訪問權限即可)。
2
單獨申報像枚舉類
public enum MyEnum{
SOMETHING
}
這是訪問另一個類。
public class AnotherClass{
..
public void someMethod(){
Sysout(MyEnum.SOMETHING);
}
}
if you do static import u can acces with the name of enum instance;
import static MyEnum.SOMETHING
public class MyClass{
public void method(){
SOMETHING.name();
}
}
這裏另一個possibilty就像一個內部類
public class EnumHolder{
public enum MyEnum{
ENUM_INSTANCE
}
}
和外人類可以訪問這裏引用classHolder然後枚舉
public class OutsiderClass{
public void method(){
Sysout(EnumHolder.MyEnum.ENUM_INSTANCE);
}
}
相關問題
- 1. Ç枚舉(枚舉類型定義)的
- 2. 如何從其它文件訪問類的公共枚舉:C++
- 3. C++如何訪問內部枚舉類?
- 4. Java如何訪問內部枚舉類
- 5. 嵌套枚舉不能訪問枚舉類的私有字段
- 6. 自定義枚舉類型
- 7. 不同類中的枚舉訪問
- 8. 如何訪問cython中的枚舉?
- 9. 如何訪問C++中的枚舉
- 10. 公共枚舉無法從XNA的外部類訪問C#
- 11. 確定枚舉類中的枚舉數(或任何枚舉類中的特定枚舉值)
- 12. 兩個具有相同值的枚舉,如何訪問它們?
- 13. 覆蓋在繼承類的自定義枚舉枚舉
- 14. 如何獲取枚舉值的枚舉定義?
- 15. 如何在枚舉類型中定義枚舉成員的映射?
- 16. 內部類訪問外部類嵌套枚舉
- 17. 具有自定義枚舉的C++類
- 18. 的類型定義枚舉變量
- 19. 未定義的符號枚舉類
- 20. 如何自定義枚舉的排序?
- 21. 如何枚舉具有自定義類屬性的所有類?
- 22. 定義類外部但名字空間內部的枚舉
- 23. 使用外部類的枚舉來避免在.proto中定義?
- 24. 指定枚舉值類型的問題
- 25. 如何訪問枚舉類型的整數和字符串?
- 26. 如何獲得全局訪問C#中的枚舉類型?
- 27. 訪問在一個結構中定義的枚舉值
- 28. Clojure/postgresql:如何從Jdbc4Array結果中訪問枚舉值?我在PostgreSQL的枚舉定義
- 29. Java自定義枚舉值枚舉
- 30. 類C++中的枚舉聲明,在類中枚舉的問題
枚舉只是特殊類型的類,所以你可以在一個文件中聲明多個類,你可以在類中聲明Enums。 –
@RongNK:我在問如何訪問它們。我有一個類的枚舉測試。我想在外面訪問它,那麼我應該如何訪問它? – NewUser
你必須聲明enum爲'public ...(取決於你想要的)',然後在外部包時使用類名作爲前綴。 –