Java - 列舉的 getDeclaringClass() 方法



描述

Java Enum getDeclaringClass() 方法返回與該列舉常量的列舉型別對應的 Class 物件。當且僅當 e1.getDeclaringClass() == e2.getDeclaringClass() 時,兩個列舉常量 e1 和 e2 屬於相同的列舉型別。

宣告

以下是 java.lang.Enum.getDeclaringClass() 方法的宣告

public final Class<E> getDeclaringClass()

引數

返回值

此方法返回與該列舉常量的列舉型別對應的 Class 物件。

異常

獲取列舉的宣告類示例

以下示例演示了使用其引用來獲取列舉的 getDeclaringClass() 方法的使用。

package com.tutorialspoint;

// enum showing topics covered under Tutorials
enum Tutorials {  
   Java, HTML, Python; 
} 
 
public class EnumDemo { 

   public static void main(String args[]) {
 
      Tutorials t1, t2, t3; 
    
      t1 = Tutorials.Java; 
      t2 = Tutorials.HTML; 
      t3 = Tutorials.Python; 
    
      // returns the Class object corresponding to an enum
      System.out.println(t2.getDeclaringClass()); 
   } 
} 

讓我們編譯並執行上面的程式,這將產生以下結果:

class com.tutorialspoint.Tutorials

獲取列舉的宣告類示例

以下示例演示了使用其型別直接獲取列舉的 getDeclaringClass() 方法的使用。

package com.tutorialspoint;

// enum showing topics covered under Tutorials
enum Tutorials {  
   Java, HTML, Python; 
} 
 
public class EnumDemo { 

   public static void main(String args[]) {
 
      Tutorials t1, t2, t3; 
    
      t1 = Tutorials.Java; 
      t2 = Tutorials.HTML; 
      t3 = Tutorials.Python; 
    
      // returns the Class object corresponding to an enum
      System.out.println(Tutorials.HTML.getDeclaringClass()); 
   } 
} 

讓我們編譯並執行上面的程式,這將產生以下結果:

class com.tutorialspoint.Tutorials

獲取列舉的宣告類時遇到異常的示例

以下示例演示了使用 getDeclaringClass() 方法檢查列舉是否屬於同一型別。由於我們比較的是兩種不同型別的列舉,程式將給出編譯器錯誤。

package com.tutorialspoint;

// enum showing topics covered under Tutorials
enum Tutorials {  
   Java, HTML, Python; 
} 

// a different enum with same values
enum Tutorial {  
   Java, HTML, Python; 
}

public class EnumDemo { 

   public static void main(String args[]) {

      if(Tutorials.HTML.getDeclaringClass() == Tutorials.Python.getDeclaringClass()) {
         System.out.println("Enums are of same type");
      }
      if(Tutorial.HTML.getDeclaringClass() == Tutorials.Python.getDeclaringClass()) {
         System.out.println("Enums are of same type");
      }      
   } 
} 

讓我們編譯並執行上面的程式,這將產生以下結果:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Incompatible operand types Class<Tutorial> and Class<Tutorials>

	at com.tutorialspoint.EnumDemo.main(EnumDemo.java:20)
java_lang_enum.htm
廣告