คุณทำไม่ได้ ฉันคิดว่าคุณมีสี่ตัวเลือกที่นี่ ทั้งสี่ข้อเสนอทางออก แต่ด้วยวิธีที่แตกต่างกันเล็กน้อย ...
ตัวเลือกที่หนึ่ง: ใช้ built-in name()
บน enum นี่เป็นสิ่งที่สมบูรณ์แบบหากคุณไม่ต้องการรูปแบบการตั้งชื่อพิเศษใด ๆ
String name = Modes.mode1.name(); // Returns the name of this enum constant, exactly as declared in its enum declaration.
ตัวเลือกที่สอง: เพิ่มคุณสมบัติการเอาชนะลงใน enums ของคุณหากคุณต้องการการควบคุมที่มากขึ้น
public enum Modes {
mode1 ("Fancy Mode 1"),
mode2 ("Fancy Mode 2"),
mode3 ("Fancy Mode 3");
private final String name;
private Modes(String s) {
name = s;
}
public boolean equalsName(String otherName) {
// (otherName == null) check is not needed because name.equals(null) returns false
return name.equals(otherName);
}
public String toString() {
return this.name;
}
}
ตัวเลือกที่สาม: ใช้ finals คงที่แทน enums:
public final class Modes {
public static final String MODE_1 = "Fancy Mode 1";
public static final String MODE_2 = "Fancy Mode 2";
public static final String MODE_3 = "Fancy Mode 3";
private Modes() { }
}
ตัวเลือกที่สี่: อินเทอร์เฟซมีทุกฟิลด์สาธารณะคงที่และสุดท้าย:
public interface Modes {
String MODE_1 = "Fancy Mode 1";
String MODE_2 = "Fancy Mode 2";
String MODE_3 = "Fancy Mode 3";
}
.name()
See: stackoverflow.com/a/6667365/887836