title: NullPointerException using Long after equality check
body: <p>This threw me.</p>
  
  <p>If you have a Java Long variable and you check equality against a primitive value using the == operator the runtime type of the value is changed to a primitive long. </p>
  
  <p>Subsequent checking the variable for a null value then throws an unexpected NullPointerException.</p>
  
  <p>So in the test class:</p>
  
  <pre><code>public class LongDebug {
  
  public static void main(String[] args) {
      Long validValue = 1L; 
      Long invalidValue = -1L;
      Long nullValue = null;
  
      System.out.println("\nTesting the valid value:");
      testExpectedBehaviour(validValue);
      testUnExpectedBehaviour(validValue);
  
      System.out.println("\nTesting the invalid value:");
      testExpectedBehaviour(invalidValue);
      testUnExpectedBehaviour(invalidValue);
  
      System.out.println("\nTesting the null value:");
      testExpectedBehaviour(nullValue);
      testUnExpectedBehaviour(nullValue);
  }
  
  /**
   * @param validValue
   */
  private static void testExpectedBehaviour(Long value) {
      if (value == null || value == -1) System.out.println("Expected: The value was null or invalid");
      else System.out.println("Expected: The value was valid");
  }
  
  private static void testUnExpectedBehaviour(Long value) {
      try {
          if (value == -1 || value == null) System.out.println("Unexpected: The value was null or invalid");
          else System.out.println("Unexpected: The value was valid");
      } catch (NullPointerException e) {
          System.out.println("Unexpected: The system threw an unexpected NullPointerException");
      }
  }
  }
  </code></pre>
  
  <p>The result I get is:</p>
  
  <pre><code>Testing the valid value:
  Expected: The value was valid
  Unexpected: The value was valid
  
  Testing the invalid value:
  Expected: The value was null or invalid
  Unexpected: The value was null or invalid
  
  Testing the null value:
  Expected: The value was null or invalid
  Unexpected: The system threw an unexpected NullPointerException
  </code></pre>
  
  <p>Is this on spec or a bug in the JDK?</p>