title: Using Streams with primitives data types and corresponding wrappers
body: <p>While playing around with Java8's Streams-API, I stumbled over the following:</p>
  
  <p>To convert an array of primitive wrapper classe objects into a <code>Stream</code> I just have to call <code>Stream.of(array)</code>. But to convert an array of primitive data types, I have to call <code>.of(array)</code> from the corresponding wrapper (class) stream class (&lt;-- that sounds silly).</p>
  
  <p>An example:</p>
  
  <pre><code>final Integer[] integers = {1, 2, 3};
  final int[]     ints     = {1, 2, 3};
  
  
  Stream.of(integers).forEach(System.out::println); //That works just fine
  
  Stream.of(ints).forEach(System.out::println);     //That doesn't
  
  IntStream.of(ints).forEach(System.out::println);  //Have to use IntStream instead
  </code></pre>
  
  <p><br>
  <strong>My question(s):</strong>
  Why is this? Does this correlate to e.g. the behaviour of <code>Arrays.asList()</code> which also just works for wrapper class arrays?</p>