public class Enumvalues{
enum courseList {
JAVA,
C,
PYTHON,
PERL
}
enum generalInformation {
NAME,
AGE,
PHONE
}
enum sex {
MALE,
FEMALE
}
}
public static void main(String args[]) {
printEnumValue(generalInformation); // how to pass enum in this block
}
static void printEnumValue(enum generalInformation) { // how to receive enum in this block
System.out.println(java.util.Arrays.asList(generalInformation.values()));
}
回答
如果你想從
public class Test {
enum GeneralInformation{
NAME;
}
private static void print(GeneralInformation val){
System.out.println(val);
}
public static void main(String[] args) {
print(GeneralInformation.NAME);
}
}
否則,如果你想傳遞全班那麼,因爲它不是從問題明確枚舉傳遞一個值
private static void print(Class<?> generalInfo){
}
public static void main(String[] args) {
print(GeneralInformation.class);
}
的枚舉使用就像一個類型:
static void printEnumValue(courseList generalInformation) { // how to receive enum in this block
使用像:
printEnumValue(courseList.JAVA);
printEnumValue(EnumValues.generalInformation.NAME,EnumValues.generalInformation.AGE,EnumValues.generalInformation.PHONE);
接收:
public static void printEnumValue(EnumValues.generalInformation en){
System.out.println(en.toString());
}
枚舉是一個類。所以你可以傳遞一個類的實例(例如EnumValues.generalInformation.PHONE
),或者你可以傳遞類本身(例如EnumValues.generalInformation.class
)。
如果要列出枚舉類的所有實例,則需要傳遞枚舉類,例如使用EnumSet.allOf(EnumValues.generalInformation.class)
。
您的困惑主要來自您不尊重Java命名約定的事實。 ENums是類,應以大寫字母開頭(例如,GeneralInformation
)。另一個混淆之處是名稱的選擇不當。 JAVA不是課程列表。這是一門課程。所以枚舉應該被命名爲Course
。
感謝您的信息 –
請注意,您的問題混淆了兩個不同的問題:將枚舉傳遞給函數或將枚舉常量傳遞給函數。我的理解是你想要傳遞枚舉本身,而不是函數的常量之一。如果不是,請參閱Narendra Pathai關於如何將單個枚舉常量傳遞給函數的答案。如果你不知道一個枚舉和枚舉常量之間的區別是什麼,查看docs約枚舉...
我知道你想要的是有一個打印(或任何其他)函數,其中您可以傳遞任何可能的枚舉,以打印每個枚舉的可能值(即常量)。我發現下面的兩種方法做到這一點:
比方說我們有以下枚舉:
// The test enum, any other will work too
public static enum ETest
{
PRINT,MY,VALUES
}
變式1:傳遞從枚舉到你的函數常量數組;由於枚舉的常量是靜態值,就可以很容易地訪問,並傳遞給你的「打印」功能如下:
public static void main(String[] args)
{
// retreive all constants of your enum by YourEnum.values()
// then pass them to your function
printEnum(ETest.values());
}
// print function: type safe for Enum values
public static <T extends Enum<T>> void printEnum(T[] aValues)
{
System.out.println(java.util.Arrays.asList(aValues));
}
變式2:傳遞枚舉的類的功能參數。這可能看起來更漂亮,但要注意,反射參與(性能):
public static void main(String[] args)
{
printEnum2(ETest.class);
}
// print function: accepts enum class and prints all constants
public static <T extends Enum<T>> void printEnum2(Class<T> aEnum)
{
// retreive all constants of your enum (reflection!!)
System.out.println(java.util.Arrays.asList(aEnum.getEnumConstants()));
}
在我看來,最好的變式使用變式1,因爲反射的過度使用的2.變式2唯一的好處給你,是你的函數內部有Enum本身的Class對象(靜態枚舉,不僅是常量),所以我已經提到它的完整性。
- 1. Java:將枚舉傳遞給方法
- 2. 如何將枚舉作爲參數傳遞給函數?
- 3. 將枚舉值作爲參數傳遞
- 4. 通行證枚舉類作爲參數傳遞給Java中
- 5. 將C#枚舉傳遞給C++ CLI的包裝方法參數
- 6. 將枚舉傳遞給方法
- 7. 將「未知枚舉」傳遞給方法
- 8. 如何在C#中將枚舉作爲參數傳遞給C函數
- 9. 如何將簡單(枚舉)參數傳遞給C#中的類?
- 10. 傳遞一個枚舉方法參數
- 11. 傳遞枚舉作爲參數
- 12. 將類作爲參數傳遞給java中的方法
- 13. 我怎樣才能將枚舉對象與嵌套枚舉傳遞給方法作爲參數?
- 14. 如何將Scala枚舉作爲參數傳遞?
- 15. 將數組作爲參數傳遞給枚舉構造函數:語法問題
- 16. 如何將新數組作爲參數傳遞給Java中的方法?
- 17. 如何在java方法中將數組作爲參數傳遞?
- 18. 傳遞枚舉類型作爲參數在Java中
- 19. 在Java中傳遞枚舉類型值作爲參數
- 20. 將參數傳遞給Java方法
- 21. 將枚舉參數傳遞給case類不起作用
- 22. 是否可以將非枚舉值作爲枚舉函數參數傳遞?
- 23. Java的驗證作爲參數傳遞一個枚舉值
- 24. 如何將GWT方法作爲參數傳遞給Javascript函數?
- 25. 如何將數組作爲分隔參數傳遞給方法
- 26. 如何在Java中將方法作爲參數傳遞?
- 27. 傳遞枚舉作爲參數 - 作爲字典(的字符串,枚舉)(VB 2012)
- 28. 將Java類作爲參數傳遞給JRuby方法
- 29. 如何將數組傳遞給枚舉中的構造函數?
- 30. 將C#中的十六進制枚舉參數傳遞給C
我想要通過enum.generalInformation –
全班作爲枚舉就像任何其他類一樣,你想要類的文字?然後我編輯使用'類>' –
或者如果你想要枚舉類的所有實例,然後使用'GeneralInformation.values()'這將給你GeneralInformation [],其中包括枚舉的所有實例 –