2013-06-05 1 views
1

EqualsBuilder from apache commons lang을 알고있는 경우이를 리플렉션을 통해 equals 메소드를 구현하는 데 사용할 수 있음을 알고 있습니다. 그것은 잘 작동하는 것 같지만 제 3 자 소프트웨어를 사용하고 있기 때문에 그 행동을 바꿀 필요가 있습니다. 모든 속성을 검사하는 일반 비교기가 필요하며 속성 객체에 equals 메소드가 구현되어 있다고 가정 할 수는 없지만 EqualsBuilder는 가정합니다.EqualsBuilder가 속성의 비교 자로 사용되는 경우

자세히 public EqualsBuilder append(Object lhs, Object rhs)을 변경하려고합니다.이 대신 isEquals = lhs.equals(rhs) EqualsBuilder를 호출해야합니다. 비슷한 것 isEquals = EqualsBuilder.reflectionEquals(lhs, rhs, false);

메서드를 재정의 할 수는 있지만 EqualsBuilder가 자체 개체를 만들기 때문에 호출되지 않습니다. 따라서 EqualBuilder에 내 RecursiveEquilbuilder 개체를 사용하도록 알려야합니다.

아이디어가 있으십니까?

+0

CompareToBuilder를 사용하면 특성이 Comparable을 구현한다고 가정하므로 도움이되지 않습니다. :-( – EhmKah

+0

https://issues.apache.org/jira/browse/LANG-1034를 처리해야하는 기능 요청을 만들었습니다. –

답변

0

조금 오래되었지만 도움이되기를 바랍니다.

동일한 문제가 발생하여이 similar questionthe most voted answer (작성자가 고른 사람이 아님)이 가장 적합합니다.

기본적으로 Unitils이라는 라이브러리를 사용합니다.

User user1 = new User(1, "John", "Doe"); 
User user2 = new User(1, "John", "Doe"); 
assertReflectionEquals(user1, user2); 

클래스 Userequals()를 구현하지 않는 경우에도 전달합니다 :

은 사용하는 것입니다. tutorial에 더 많은 예제와 assertLenientEquals이라는 매우 멋진 주장을 볼 수 있습니다.

관련 문제