簡體   English   中英

來自存儲在屬性中的子類的調用方法

[英]Call method from child class stored in property

我正在為我的項目創建一個驗證類。 目前,我仍然想從通過泛型類型傳遞的類中調用方法(在本例中為getText() )。

以下是代碼:

在該類中,我創建了一個getRules,並在其中傳遞了HashMap,其中的鍵是字段的名稱,以及規則的值。

public class PlayerValidator extends FormValidator<PlayerFormPanel> {
  @Override
  protected HashMap<String, String> getRules() {
    HashMap<String, String> rules = new HashMap<>();
    rules.put("firstNameField", "required");

    return rules;
  }
}

接下來,我有一個父類,其中有一個validate方法,該方法將遍歷規則並檢查規則是否有效。

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對象,但是如何在firstNameField (field.getKey())上調用getText()方法呢?

您應該使用內省或倒影

for(PropertyDescriptor prop : Introspector.getBeanInfo(class).getPropertyDescriptors()){
  System.out.println(prop.getReadMethod());
}  

這個問題的可能重復: Java思考:如何獲取Java類的所有getter方法並調用它們

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM