Java: перебор классов

#java

#java

Вопрос:

Скажем, у меня есть метод Java, например:

   public boolean isTestRenewalRequired(int versionId, ReleaseVersion releaseVersion, Class<?> entityCls, int results) {
    Class<?>[] clases = {Test1.class, Test2.class, Test3.class, Test4.class};
    boolean hasResults = false;
    final CommonCriteriaQueryBuilder qBuilder = CommonCriteriaQueryBuilder.getInstance(crudService, entityCls);
    for (Class<?> c: clases) {
    if (ReleaseVersionStatusEnum.F.equals(releaseVersion.getStatus())) {
      c.equals(qBuilder);
      qBuilder.whereEqual("tempReleaseVersion", releaseVersion.getId().toString());      
    } else if (ReleaseVersionStatusEnum.W.equals(releaseVersion.getStatus())) {
      c.equals(qBuilder);
      qBuilder.whereEqual("releaseVersion", releaseVersion.getId().toString());
    }
      
      if (results > 0) {
        hasResults = true;
      }
    }
    
    return hasResults;
  } 
 

commoncriteriaquerybuilder позволяет мне сравнивать два Java-класса tempReleaseVersion и ReleaseVersion. Мой вопрос в том, как я могу перебирать классы Java (Test1, Test2, Test3, Test4) по условиям if?
Для c.equals(qBuilder) Я получил следующее предупреждение: маловероятный тип аргумента для equals(): CommonCriteriaQueryBuilder, похоже, не связан с классом<захват #6-of ?> и удалите этот вызов «equals»; сравнения между несвязанными типами всегда возвращают false .

 public enum ReleaseVersionStatusEnum {
  W, // Wait for release / in work
  F, // Released for approval
  L, // Deleted / Rejected
}

 

Может ли кто-нибудь помочь мне и дать мне подсказку?

Комментарии:

1. Вы не можете сравнивать объект, когда отличается только содержимое компонентов. Вы должны использовать отражение для извлечения соответствующих полей и сравнения их со значениями, которые вы хотите знать.

2. Хорошо, как я могу это сделать?

3. Ну, это требует от вас некоторого опыта с отражением: Field[] fd = obj.getClass().getDeclaredFields() затем перебирает каждое поле для содержимого…