Saya memiliki beberapa contoh kelas yang memiliki satu enum yang bersarang di dalamnya. Berikut adalah versi sederhana dari kelas tersebut:
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
}
Tujuan saya adalah mengulangi kelas-kelas ini secara terprogram (yaitu Kelas Satu, Kelas Kedua, dll.) dan menarik enum (selalu disebut "EnumGroup") dan memanggil metode getName() pada setiap nilai enum.
Saya telah melihat postingan StackOverflow ini pada refleksi dan enum Java, tetapi ketika saya mencoba mengambil enum saya dengan menentukan jalur (com.package.FirstClass.EnumGroup) saya mendapatkan ClassNotFoundException. Saya kira memasukkan enum ke dalam kelas akan mengacaukan sesuatu.
Class<?> clz = Class.forName("com.package.FirstClass.EnumGroup");
Saya tidak memerlukan pengaturan ini, tetapi tujuan akhirnya adalah tidak memiliki kode yang sama di setiap kelas yang mengulangi enum.
Class.forName()
? Mengapa tidak menggunakan kelas literalcom.package.FirstClass.EnumGroup.class
saja? Anda tidak akan mendapatkan pengecualian, kompiler akan memeriksa apakah Anda menggunakan nama kelas yang valid, dan pemfaktoran ulang akan secara otomatis membuat kode Anda benar. - person JB Nizet   schedule 19.10.2015