簡體   English   中英

Java-您可以從父類訪問在子類中聲明的枚舉嗎?

[英]Java - Can you access an Enum declared in Subclass from Super class?

我希望在子類中以Enum類型聲明,然后從超類訪問它。 這是我想出的,但是不起作用:

class Subclass {
 enum Pets {
  CAT,
  DOG;
 }

Class<Pets> getEnumClass() {
    return Pets.class;
 }
}

class Superclass  {
    // This generates a warning: 
abstract Class<? extends Enum> getEnumClass(); 
void PrintEnumNames() throws InstantiationException, IllegalAccessException {
Class<? extends Enum> enumClass = getEnumClass();

Enum newEnum = enumClass.newInstance();
 for( Enum iEnum : newEnum.values()) { // newEnum.values() isn't available
    System.out.printf("%s", iEnum.toString());
   }
 }
}

values()是靜態方法,不能在實例上調用它。 要從類中獲取枚舉值,請使用Class.getEnumConstants()

Class<? extends Enum> enumClass = getEnumClass(); 
for (Object o: enumClass.getEnumConstants())
    System.out.println(o);

實際上,您可以在實例上調用靜態方法,但是無法以這種方式獲取Enum的實例。 也就是說,此行將不起作用,並且每次都會引發InstantiationException。

Enum newEnum = enumClass.newInstance();

這是因為Enums的值受到限制,並且這些值是在初始化類時由JVM設置的(在您的示例中為Pets.CAT和Pets.DOG)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM