Böyle bir onay istemiyorum, çünkü bir Özel Durum atar.Bir sınıfın argüman yapıcısı olup olmadığını nasıl kontrol edebilirim
Başka bir yolu var mı?
Böyle bir onay istemiyorum, çünkü bir Özel Durum atar.Bir sınıfın argüman yapıcısı olup olmadığını nasıl kontrol edebilirim
Başka bir yolu var mı?
Sen 0.
private boolean hasParameterlessPublicConstructor(Class<?> clazz) {
for (Constructor<?> constructor : clazz.getConstructors()) {
// In Java 7-, use getParameterTypes and check the length of the array returned
if (constructor.getParameterCount() == 0) {
return true;
}
}
return false;
}
Sen halka açık olmayan markalar için getDeclaredConstructors()
kullanmak zorunda kalacak vardır birini bulduğunda durdurma, tüm Constructor
s almak ve parametreler sayılarını kontrol edebilirsiniz.
Stream
ile yeniden yapıldı.
private boolean hasParameterlessConstructor(Class<?> clazz) {
return Stream.of(clazz.getConstructors())
.anyMatch((c) -> c.getParameterCount() == 0);
}
Yapıcı sınıfı hiçbir getParameterCount() yöntemi vardır : //docs.oracle.com/javase/8/docs/api/java/lang/reflect/Constructor.html#getParameterCount--). GetParameterTypes öğesini kullanabilir ve döndürülen dizinin boyutunu kontrol edebilirsiniz. – gerrytan
@gerrytan [Yani yeni bir Java 8 yöntemidir] (http: –
Sen sınıfının yapıcısı döngüler bir yöntem oluşturmak ve herhangi no-arg yapıcı olup olmadığını kontrol edebilirsiniz. getDeclaredConstructors()
kullanarak, derleyici tarafından eklenen varsayılan yapıcı ekleneceği anlamına
boolean hasNoArgConstructor(Class<?> klass) {
for(Constructor c : klass.getDeclaredConstructors()) {
if(c.getParameterTypes().length == 0) return true;
}
return false;
}
Not. Örneğin şu
class A { }
hasNoArgConstructor(A.class);
Sen getConstructors()
kullanabilirsiniz gerçek dönecektir ancak yalnızca görünür kurucular kontrol edecektir. Dolayısıyla sen Bahar kullanıyorsanız ClassUtils.hasConstructor() kullanabilirsiniz
return false olur:
ClassUtils.hasConstructor(obj.getClass());
Neden istisna fobisi? http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Constructor.html – EJP