title: Custom equals outside of the class definition
body: <p>Is there a way to write a custom equals method compactly when trying to compare two objects but not relying on those objects' internal equals() method? For example, if I had two Foo objects like so:</p>
  
  <pre><code>public class Foo {
      int id;
      String name;
  
      @Override
      public boolean equals(Object o) {
          if (this == o) {
              return true;
          }
          if (o == null || getClass() != o.getClass()) {
              return false;
          }
  
          Foo item = (Foo) o;
          return id == item.id &amp;&amp; listId == item.name;
      }
  }
  </code></pre>
  
  <p>But, in a use case for the foo objects, lets say I just want them equated by their id. Keep in mind this is a toy example and the real use case has many more fields so I may have an object with 6 fields all being used in the overridden equals method but may want to only use 3 of them to do an equals outside the class when comparing two objects.</p>
  
  <pre><code>List&lt;Foo&gt; objType1;
  List&lt;Foo&gt; objType2;
  </code></pre>
  
  <p>Compare the two lists and assert each Foo object is equal but only use a subset of the fields of Foo in the comparison. I dont want to touch the actual Foo object in any way. How can i do this outside of asserting by handing that each field I am interested in is equal?</p>