#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() затем перебирает каждое поле для содержимого…