title: Java Primitive conversions in assignment context Long and int
body: <pre><code>Long ll = 102; // Error
  Byte bb = 101; // No error
  </code></pre>
  
  <p>Why <code>Long</code> assignment is resulting in compile time error while <code>Byte</code> assignment is fine?</p>
  
  <p><code>Long ll = 102</code> is resulting in compiler error "Type mismatch: cannot convert from int to Long". I assumed compiler will widen of 102 to <code>long</code> and then box to <code>Long</code>. 
  But it is not happening. </p>
  
  <p>But <code>Byte bb = 101;</code> is not generating compiler error. Here I guess, 101 is narrowed to <code>byte</code> (being non-long integral constant) and then Boxed to <code>Byte</code>. 
  When there is no problem with narrowing, what is the problem with widening?</p>