Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API與框架

Java 類引用

Java 有用資源

Java - 列舉字串



Java 列舉 是一種特殊的構造,用於表示一組預定義的常量字串,並在用作應用程式程式碼中的常量時提高程式碼清晰度。預設情況下,列舉字串表示與其宣告相同。請考慮以下示例

enum WEEKDAY { MONDAY, TUESDAY, WEDNESDAY, THRUSDAY, FRIDAY, SATURDAY, SUNDAY }

如果我們使用列舉直接列印上述列舉的字串表示,使用toString()或使用name()方法,它將列印與宣告相同的字串。

System.out.println(WEEKDAY.MONDAY);
System.out.println(WEEKDAY.MONDAY.toString());
System.out.println(WEEKDAY.MONDAY.name());

它將列印如下所示的結果

MONDAY
MONDAY
MONDAY

重寫 Enum toString() 方法

現在,如果我們想將預設字串表示更改為列舉的字串表示,我們可以為列舉構造器的每個值建立一個重寫的toString()方法,如下所示

enum WEEKDAY {
	MONDAY{
      // overridden toString() method per value
      public String toString() {
        return "Day 1 of the Week: Monday";
      }
	};
	
	// or override toString() per enum
	// priority will be given to value level toString() method.
    public String toString() {
       return "Day 1 of the Week: Monday";
    }	
}

在這種情況下,我們正在重寫列舉的預設 toString() 方法以提供自定義描述。

示例:在 Java 中重寫 toString() 方法

在這個示例中,我們建立了一個列舉 WEEKDAY。使用 toString() 方法,我們設定了列舉值的自定義描述。

package com.tutorialspoint;

enum WEEKDAY { 
   // enum value constants
   MONDAY, TUESDAY, WEDNESDAY, THRUSDAY, FRIDAY, SATURDAY, SUNDAY;

   // override the toString() method for custom description
   @Override
   public String toString() {
      return switch(this) {
         case MONDAY: yield "Day 1";
         case TUESDAY:yield "Day 2";
         case WEDNESDAY:yield "Day 3";
         case THRUSDAY:yield "Day 4";
         case FRIDAY:yield "Day 5";
         case SATURDAY:yield "DAY 6";
         case SUNDAY: yield "Day 7";
      };
   }	
}
public class Tester {
   public static void main(String[] args) {
      // invoke toString() internally
      System.out.println(WEEKDAY.MONDAY);
      // invoke toString explicitly	  
      System.out.println(WEEKDAY.TUESDAY.toString());
      // invoke name() method to get the default name
      System.out.println(WEEKDAY.WEDNESDAY.name());
   }
}

輸出

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

Day 1
Day 2
WEDNESDAY

示例:在 Java 中按值重寫 toString() 方法

在這個示例中,我們重寫了此列舉 WEEKDAY 的每個值的 toString() 方法。透過這種方式,我們也可以按這種方式自定義每個值的字串表示。

package com.tutorialspoint;

enum WEEKDAY {
   
   // override the toString() method for custom description
   MONDAY{
      @Override
      public String toString() {
         return "Day 1";
      }
   },
   TUESDAY{
      @Override
      public String toString() {
         return "Day 2";
      }		
   },
   WEDNESDAY{
      @Override
      public String toString() {
         return "Day 3";
      }
   },
   THRUSDAY{
      @Override
      public String toString() {
         return "Day 4";
      }
   },
   FRIDAY{
      @Override
      public String toString() {
         return "Day 5";
      }
   },
   SATURDAY{
      @Override
      public String toString() {
         return "Day 6";
      }
   },
   SUNDAY{
      @Override
      public String toString() {
         return "Day 7";
      }
   };	
}
public class Tester {
   public static void main(String[] args) {
      // invoke toString() internally
      System.out.println(WEEKDAY.MONDAY);
      // invoke toString explicitly	  
      System.out.println(WEEKDAY.TUESDAY.toString());
      // invoke name() method to get the default name
      System.out.println(WEEKDAY.WEDNESDAY.name());
   }
}

輸出

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

Day 1
Day 2
WEDNESDAY

enum name() 方法是 final 的,不能被重寫。當列舉的字串表示被 toString() 方法重寫時,它可以用於獲取列舉的預設名稱。

廣告