Ya, Anda dapat membuat kelas bertingkat atau kelas dalam di dalam antarmuka Java (perhatikan bahwa berlawanan dengan kepercayaan populer tidak ada yang namanya " kelas dalam statis ": ini tidak masuk akal, tidak ada yang "dalam" dan tidak ada " outter "ketika kelas bertingkat statis, jadi tidak bisa" batin statis ").
Bagaimanapun, berikut ini mengkompilasi dengan baik:
public interface A {
class B {
}
}
Saya pernah melihat itu digunakan untuk meletakkan semacam "pemeriksa kontrak" langsung dalam definisi antarmuka (baik, di kelas bersarang di antarmuka, yang dapat memiliki metode statis, sebaliknya ke antarmuka itu sendiri, yang tidak bisa). Terlihat seperti ini jika saya ingat dengan benar.
public interface A {
static class B {
public static boolean verifyState( A a ) {
return (true if object implementing class A looks to be in a valid state)
}
}
}
Perhatikan bahwa saya tidak mengomentari kegunaan hal semacam itu, saya hanya menjawab pertanyaan Anda: itu bisa dilakukan dan ini adalah salah satu jenis penggunaan yang telah saya lihat.
Sekarang saya tidak akan berkomentar tentang kegunaan konstruksi semacam itu dan dari yang pernah saya lihat: Saya telah melihatnya, tetapi ini bukan konstruksi yang sangat umum.
Basis kode 200KLOC di sini di mana ini terjadi tepat nol waktu (tetapi kemudian kami memiliki banyak hal lain yang kami anggap praktik buruk yang terjadi tepat waktu nol juga sehingga orang lain akan menganggapnya normal jadi ...).