मेरे पास यह कोड है:
package tests;
import java.util.Hashtable;
public class Tests {
public static void main(String[] args) {
Hashtable<String, Boolean> modifiedItems = new Hashtable<String, Boolean>();
System.out.println("TEST 1");
System.out.println(modifiedItems.get("item1")); // Prints null
System.out.println("TEST 2");
System.out.println(modifiedItems.get("item1") == null); // Prints true
System.out.println("TEST 3");
System.out.println(Boolean.valueOf(null)); // Prints false
System.out.println("TEST 4");
System.out.println(Boolean.valueOf(modifiedItems.get("item1"))); // Produces NullPointerException
System.out.println("FINISHED!"); // Never executed
}
}
मेरी समस्या यह है कि मुझे समझ में नहीं आता है कि टेस्ट 3 ठीक क्यों काम करता है (यह प्रिंट false
करता है और उत्पादन नहीं करता है NullPointerException
) इस बीच टेस्ट 4 फेंकता है NullPointerException
। जैसा कि आप परीक्षण 1 और 2 में देख सकते हैं , null
और modifiedItems.get("item1")
बराबर हैं और null
।
जावा 7 और 8 में व्यवहार समान है।
null
ही फ़ंक्शन को शाब्दिक रूप से पास करने के लिए सिर्फ दो लाइनें एक NPE उत्पन्न नहीं करती हैं! इसका एक अच्छा कारण है, लेकिन यह निश्चित रूप से पहली नजर में भ्रामक है :-)
==
लागू किया जाता है।