Comparando valores de campo usando reflexão

Eu estou tentando comparar os valores de campo de dois objetos diferentes de maneira genérica. Eu tenho uma função (vista abaixo) que leva em dois objetos e, em seguida, obtém os campos e, em seguida, compara os campos em um loop e adiciona os campos a uma lista se eles não são os mesmos - é a maneira correta de fazer isso?

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();
 }
}

Eu estava pesquisando e vi que C # tinha como uma classe PropertyInfo - o Java tem algo assim? TAMBÉM, há uma maneira de fazer comof.getFieldValue() -Eu sei que não existe um método como esse, mas talvez haja outra maneira ???

questionAnswers(3)

yourAnswerToTheQuestion