Я попытался создать способ сравнения любых двух любых Объектов и его полей с возможностью исключать поля при необходимости.
Это работает, но когда я тестировал его, он в 30 раз медленнее, чем метод равных (в котором я не могу исключить поля).
Есть ли способ сделать отражение быстрее?
Или вообще вообще плохо его использовать?И если так, есть ли способ сделать динамический, но общий вариант сравнения, чтобы я мог исключить поля?Я обычно использую miltiple comperators для подобных проблем, но я хочу сделать это более «легким», если это хорошая идея.
private static boolean compareFieldsWithBlacklist(Class clazz, Object o1, Object o2, List<String> blackList)
throws IllegalAccessException {
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (!blackList.contains(field.getName())) {
field.setAccessible(true);
Object value1 = field.get(o1);
Object value2 = field.get(o2);
if (!value1.equals(value2))
return false;
}
}
return true;
}
Я также пытался создать экземпляр массива полей только один раз, когда я пытаюсь сравнить коллекцию.Но это только сделало это немного быстрее.