Comparing two Objects which implement the same interface for equality / equivalence - Design help

Posted by gav on Stack Overflow See other posts from Stack Overflow or by gav
Published on 2010-04-16T08:10:04Z Indexed on 2010/04/16 8:13 UTC
Read the original article Hit count: 230

Filed under:
|

Hi All,

I have an interface and two objects implementing that interface, massively simplied;

public interface MyInterface {
    public int getId();
    public int getName();
    ...
}

public class A implements MyInterface {
    ...
}

public class B implements MyInterface {
    ...
}

We are migrating from using one implementation to the other but I need to check that the objects of type B that are generated are equivalent to those of type A. Specifically I mean that for all of the interface methods an object of Type A and Type B will return the same value (I'm just checking my code for generating this objects is correct).

How would you go about this?

Map<String, MyInterface> oldGeneratedObjects = getOldGeneratedObjects();
Map<String, MyInterface> newGeneratedObjects = getNewGeneratedObjects();

// TODO: Establish that for each Key the Values in the two maps return equivalent values.

I'm looking for good coding practices and style here. I appreciate that I could just iterate through one key set pulling out both objects which should be equivalent and then just call all the methods and compare, I'm just thinking there may be a cleaner, more extensible way and I'm interested to learn what options there might be.

Would it be appropriate / possible / advised to override equals or implement Comparable?

Thanks in advance,

Gavin

© Stack Overflow or respective owner

Related posts about java

Related posts about design