title: Why is void not covariant in Java?
body: <p>If I have this interface:</p>
  
  <pre><code>public interface Foo {
      void bar();
  }
  </code></pre>
  
  <p>Why can't I implement it like this?</p>
  
  <pre><code>public class FooImpl implements Foo {
      @Override
      public Object bar() {
           return new Object();
      }
  }
  </code></pre>
  
  <p>It seems like void should be covariant with everything.  Am I missing something?</p>
  
  <p>Edit:
  I should have been clearer that I'm looking for the design justification, not the technical reason that it won't compile.  Are there negative consequences to making void covariant to everything?</p>