Comparando valores de campo usando la reflexión

Estoy tratando de comparar los valores de campo de dos objetos diferentes de una manera genérica. Tengo una función (que se ve a continuación) que toma dos Objetos y luego obtiene los campos y luego compara los campos en un bucle y agrega los campos a una lista si no son los mismos. ¿Es esta la forma correcta de hacer esto?

public void compareFields(Object qa, Object qa4) throws FieldsNotEqualException
{

  Field[] qaFields = qa.getClass().getFields();
  Field[] qa4Fields = qa4.getClass().getFields();

  for(Field f:qaFields) 
  { 

    for(Field f4:qa4Fields)
    {
       if(f4.equals(f))
       {
           found = true;
           break;
       }
       else
       {
           continue;
       }
    }
  }

 if(!found)
 {
    report.add(/*some_formatted_string*/) //some global list 
    throw new FieldsNotEqualException();
 }
}

Estaba buscando en Google y vi que C # tenía como una clase PropertyInfo. ¿Tiene Java algo como eso? TAMBIÉN, hay una manera de hacer comof.getFieldValue() -Sé que no hay un método como este pero tal vez hay otra manera ???

Respuestas a la pregunta(3)

Su respuesta a la pregunta