को आसान बनाने में किया जा सकता है वहाँ यह करने के लिए एक वैध कारण है?
कोई भी ।
लेकिन फ्लिपसाइड यह है कि जावा कंपाइलर जानता है कि टाइपकास्ट अनावश्यक है और इसे अनुकूलित करता है। तो केवल "नुकसान" पठनीयता के लिए है।
उदाहरण के लिए
।
[[email protected] tmp]$ cat Test.java
public class Test {
public void test (String x) {
String s = (String) x;
System.out.println(s);
}
}
[[email protected] tmp]$ javac Test.java
[[email protected] tmp]$ javap -c Test
Compiled from "Test.java"
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public void test(java.lang.String);
Code:
0: aload_1
1: astore_2
2: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
5: aload_2
6: invokevirtual #3 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
9: return
}
[[email protected] tmp]$
बयान String s = (String) x;
एक सरल लोड और एक दुकान में संकलित किया गया है; नहीं checkcast
निर्देश।
मुझे आश्चर्य नहीं होगा अगर जेआईटी कंपाइलर एक अनावश्यक checkcast
को अनुकूलित करने में सक्षम था ... यदि उसने देखा तो।
1 - ... हाथ से लिखित कोड में। स्रोत कोड जो उत्पन्न हुआ था, में एक अनावश्यक टाइपकास्ट स्रोत कोड जेनरेटर लिखना आसान बनाने के उद्देश्य से कार्य किया जा सकता है। आखिरकार, जेनरेट कोड की पठनीयता काफी हद तक अप्रासंगिक है।
स्रोत
2015-12-07 11:42:10
'वापसी val.equals (" वाई ")' हाँ पर्याप्त होगा ... – Tunaki
इस अनावश्यक कास्टिंग की आवश्यकता नहीं है। –
ऐसा लगता है कि उन्होंने इंटर्न को उस उदाहरण को लिखने दिया ... – m0skit0