Dua arah:
Metode 1 - hanya untuk kelas yang memiliki konstruktor tanpa argumen
Jika kelas Anda memiliki konstruktor no-arg, Anda bisa mendapatkan Class
objek menggunakan Class.forName()
dan menggunakan newInstance()
metode untuk membuat instance (meskipun berhati-hatilah karena metode ini sering dianggap jahat karena dapat mengalahkan pengecualian yang dicentang dari Java).
Sebagai contoh:
Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();
Metode 2
Pendekatan alternatif yang lebih aman yang juga berfungsi jika kelas tidak memiliki konstruktor no-arg adalah dengan membuat kueri objek kelas Anda untuk mendapatkan Constructor
objeknya dan memanggil newInstance()
metode pada objek ini:
Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);
Kedua metode tersebut dikenal sebagai refleksi . Anda biasanya harus mengetahui berbagai pengecualian yang dapat terjadi, termasuk hal-hal seperti:
- JVM tidak dapat menemukan atau tidak dapat memuat kelas Anda
- kelas yang Anda coba buat tidak memiliki jenis konstruktor yang tepat
- konstruktor itu sendiri memberikan pengecualian
- konstruktor yang Anda coba panggil tidak bersifat publik
- manajer keamanan telah diinstal dan mencegah terjadinya refleksi