comparar objetos de diferentes clases que utilizan la reflexión

jaudo :

Tengo dos objetos con exactamente los mismos atributos. No me pregunte por qué, esta se genera el código y tengo que lidiar con esto.

class Bean1 {
   int id;
}

class Bean2 {
   int id;
}

Quiero comparar objetos de cada clase sin tener que escribir el código de comparación para cada atributo. Este hilo explica cómo comparar dos objetos, pero en mi caso esto no funciona porque no son de instancias de la misma clase.

Este código devuelve falso:

EqualsBuilder.reflectionEquals(new Bean1(1), new Bean2(1));

¿Hay otra manera de comapre objetos e ignorar las clases de objetos?

jaudo :

Por fin pude hacer esto con de Apache Commons Lang ReflectionToStringBuilder , ya que proporciona una ToStringStyle.NO_CLASS_NAME_STYLE opción.

Además, como lo estoy usando con prueba unitaria, es útil porque si los objetos son differentes, voy a ser capaz de ver qué campo es diferente.

Assert.assertEquals(
   new ReflectionToStringBuilder(bean1, ToStringStyle.NO_CLASS_NAME_STYLE).toString(),
   new ReflectionToStringBuilder(bean2, ToStringStyle.NO_CLASS_NAME_STYLE).toString());

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=181370&siteId=1
Recomendado
Clasificación