title: Using Java generics in an interface to enforce implementation of a method with the implementing type as a parameter
body: <p>I have an interface like this:</p>
  
  <pre><code>public interface DataObject {
      ...
      public void copyFrom(DataObject source);
      ...
  }
  </code></pre>
  
  <p>And a class that implements it:</p>
  
  <pre><code>public class DataObjectImpl implements DataObject {
      ...
      @Override
      public void copyFrom(final DataObject source) {...}
  
      public void copyFrom(final DataObjectImpl source) {...}
      ...
  }
  </code></pre>
  
  <p>Is there any way that I can enforce the implementation of a "public void copyFrom(DataObjectImpl source)" method in the DataObject interface, using generics or otherwise?</p>