ฉันมีคลาสหลายอินสแตนซ์ที่มี enum เดียวซ้อนอยู่ข้างใน นี่คือคลาสดังกล่าวในเวอร์ชันที่เรียบง่าย:
public class FirstClass extends BaseClass {
public enum EnumGroup {
ONE("one"),
TWO("two");
private String mName;
EnumGroup(String name) {
this.mName = name;
}
public String getName() {
return mName;
}
}
// FirstClass methods
}
เป้าหมายของฉันคือการวนซ้ำคลาสเหล่านี้โดยทางโปรแกรม (เช่น FirstClass, SecondClass ฯลฯ ) และดึง enum (เรียกว่า "EnumGroup เสมอ") ออกมาแล้วเรียกใช้เมธอด getName() ในแต่ละค่าของ enum
ฉันได้ดู โพสต์ StackOverflow นี้ ในการสะท้อนกลับของ Java และ enums แต่เมื่อฉันพยายามดึง enum ของฉันโดยการระบุเส้นทาง (com.package.FirstClass.EnumGroup) ฉันจะได้รับ ClassNotFoundException ฉันเดาว่าการใส่ enum ไว้ในชั้นเรียนกำลังทำให้บางอย่างยุ่งเหยิง
Class<?> clz = Class.forName("com.package.FirstClass.EnumGroup");
ฉันไม่ต้องการการตั้งค่านี้ แต่เป้าหมายสุดท้ายไม่มีรหัสเดียวกันในแต่ละคลาสที่วนซ้ำในแจงนับ
Class.forName()
? ทำไมไม่ใช้คลาสลิเทอรัลcom.package.FirstClass.EnumGroup.class
ล่ะ? คุณจะไม่มีข้อยกเว้น คอมไพเลอร์จะตรวจสอบว่าคุณใช้ชื่อคลาสที่ถูกต้อง และการรีแฟคเตอร์จะทำให้โค้ดของคุณถูกต้องโดยอัตโนมัติ - person JB Nizet   schedule 19.10.2015