Saya menyatakan enum sebagai:
enum Sex {MALE,FEMALE};
Dan kemudian, ulangi enum seperti yang ditunjukkan di bawah ini:
for(Sex v : Sex.values()){
System.out.println(" values :"+ v);
}
Saya memeriksa Java API tetapi tidak dapat menemukan metode values ()? Saya ingin tahu dari mana metode ini berasal?
Tautan API: https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html
Metode ini didefinisikan secara implisit (yaitu dihasilkan oleh kompiler).
Dari JLS :
sumber
Added by the compiler
berarti tidak ada. java untuk kode ini atau kode ini dihasilkan oleh kompiler? Saya memeriksa kode sumber OpenJDK dari Enum dan tidak adavalues()
Jalankan ini
kamu akan lihat
Ini semua adalah metode umum yang dimiliki kelas "jenis kelamin". Mereka tidak ada dalam kode sumber, javac.exe menambahkannya
Catatan:
jangan pernah menggunakan seks sebagai nama kelas, sulit untuk membaca kode Anda, kami menggunakan Seks di Jawa
ketika menghadapi teka-teki Java seperti ini, saya sarankan untuk menggunakan alat dekompiler bytecode (saya menggunakan bytecode garis besar plugin Andrey Loskutov's Eclispe plugin). Ini akan menunjukkan semua yang ada di dalam kelas
sumber