İki yol:
Yöntem 1 - yalnızca bağımsız değişken oluşturucu içermeyen sınıflar için
Sınıfınızda bağımsız değişken olmayan bir kurucu varsa, bir örnek oluşturmak için yöntemi Class
kullanarak bir nesne edinebilir Class.forName()
ve kullanabilirsiniz newInstance()
(bununla birlikte, bu yöntemin Java'nın kontrol edilen istisnalarını yenebileceği için genellikle kötü olarak kabul edildiğine dikkat edin ).
Örneğin:
Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();
Yöntem 2
Sınıfın arginsiz oluşturucuları yoksa da işe yarayan daha güvenli bir alternatif yaklaşım, Constructor
nesnesini almak için sınıf nesnenizi sorgulamak ve newInstance()
bu nesnede bir yöntem çağırmaktır :
Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);
Her iki yöntem de yansıma olarak bilinir . Aşağıdakiler dahil olmak üzere, genellikle meydana gelebilecek çeşitli istisnaları yakalamanız gerekecektir:
- JVM sınıfınızı bulamıyor veya yükleyemiyor
- başlatmaya çalıştığınız sınıfın doğru tür kurucuları yok
- yapıcının kendisi bir istisna attı
- çağırmaya çalıştığınız kurucu herkese açık değil
- bir güvenlik yöneticisi kuruldu ve yansımanın oluşmasını engelliyor