title: In Java generic class, add extra generic constraints at constructor level?
body: <p>I have an interface called <code>Bar</code> and a generic class <code>Foo</code> parameterized on a type that <em>is a</em> <code>Bar</code>:</p>
  
  <pre><code>class Foo&lt;B extends Bar&gt; { }
  </code></pre>
  
  <p>My class has a general purpose constructor that takes a <code>Class</code> and a <code>Stream</code>:</p>
  
  <pre><code>class Foo&lt;B extends Bar&gt; {
      B[] bs;
      Foo(Class&lt;B&gt; clazz, Stream&lt;B&gt; stream) { // General ctor
          bs = someFunctionOf(clazz, stream);
      }
  }
  </code></pre>
  
  <p>I'm trying to add a specialized constructor which is requires that its actual method parameter <em>both</em> is a <code>Bar</code> <em>and</em> an <code>enum</code> class such that I can call my general purpose constructor from the special constructor:</p>
  
  <pre><code>class Foo&lt;B extends Bar&gt; {
      B[] bs;
      Foo(Class&lt;B&gt; clazz, Stream&lt;B&gt; stream) { // General ctor
          bs = someFunctionOf(clazz, stream);
      }
      // FIX THIS ----+
      //              |
      //              ˅
      Foo(Class&lt;Something&gt; clazz) { // Special ctor
          // Can we make this work so Something is a Bar and an enum
          // and we can call the other constructor like this?
          this(clazz, Arrays.stream(clazz.getEnumConstants());
      }
  }
  </code></pre>