Я пишу некоторые полностью динамические методы, в которых мне нужно сравнить два объекта разных классов.
Вот пример объектов:
public class Object1 {
private String lastname;
private String firstname;
private int age;
private int gender;
//All getters and setters
}
public class Object2 {
private String lastname;
private String address;
private String job;
//All getters and setters
}
Как вы можете видеть здесь, единственное общее свойство - это фамилия, поэтому я хочу, чтобы мое сравнение применялось только к фамилии
Дополнительно:
- В моем реальном коде я использую много разных классов, я не могу заставить их реализовывать общие интерфейсы, на самом деле, я вообще не могу их изменять
- Я не знаю, какие свойства могут быть общими, поэтому я не могу жестко закодировать свои тесты
- Я использую Java 8
Итак, я ищу какой-то класс, похожий на BeanUtils, в котором есть метод copyProperties для общих свойств, но здесь вместо копирования я бы хотел сравнить.
Я думаю, что такой класс полезности может существовать, но я не могу его найти.
Так что, если у вас есть идея, я буду рад ее прочитать:)
Спасибо!
[Изменить 1] Дополнительные сведения о том, почему я хочу это сделать:
Я пишу общую систему для генерации конечных точек для REST Api на основе JAX-RS (Джерси).
Я использую интерфейсы с обобщенными типами, как этот «простой» пример:
public interface sampleEndpoint<BEANPARAM,BODYREQUEST,RESPONSE> {
@PUT
@Path("/{id}")
default RESPONSE update(@Valid @BeanParam BEANPARAM bp, @Valid BODYREQUEST body) {
//Check if id in path is the same as id in the body
....
}
}
(С Джерси мы не можем использовать BeanParam для извлечения в том же Bean PathParam, QueryParam и RequestBody ... вот почему мне нужно использовать и BeanParam, и другой bean-компонент для тела)
Мои варианты использования могут быть более сложными, но это простая иллюстрация.