我正在为我的项目创建验证课程。
目前,我仍然坚持要从通过泛型类型传递的类调用方法(在本例中为getText()
)。
以下是代码:
在这个类中,我创建了一个getRules,我在其中传递一个HashMap,其中key是字段的名称,以及附加到它的规则中的值。
public class PlayerValidator extends FormValidator<PlayerFormPanel> {
@Override
protected HashMap<String, String> getRules() {
HashMap<String, String> rules = new HashMap<>();
rules.put("firstNameField", "required");
return rules;
}
}
接下来,我得到了一个父类,我在其中获得了一个验证方法,该方法将迭代规则并检查规则是有效还是无效。
abstract class FormValidator<T> {
abstract HashMap<String, String> getRules();
public void validate(T form) {
System.out.println(form.toString());
for (Map.Entry<String, String> field : getRules().entrySet()) {
System.out.println(field.getKey());
System.out.println(field.getValue());
}
}
}
在泛型类型T
中,我获得了PlayerFormPanel
对象,但是如何在getText()
(field.getKey()上调用firstNameField
方法)?
答案 0 :(得分:0)
您应该使用Introspector或反射
for(PropertyDescriptor prop : Introspector.getBeanInfo(class).getPropertyDescriptors()){
System.out.println(prop.getReadMethod());
}
此问题可能重复: Java Reflection: How can i get the all getter methods of a java class and invoke them