title: What is the difference between 'E', 'T', and '?' for Java generics?
body: <p>I come across Java code like this:</p>
  
  <pre><code>public interface Foo&lt;E&gt; {}
  
  public interface Bar&lt;T&gt; {}
  
  public interface Zar&lt;?&gt; {}
  </code></pre>
  
  <p>What is the difference among all three of the above and what do they call this type of class or interface declarations in Java?</p>