2016-08-02 38 views

回答

2

第一負載,其中所述第二調用使用getFieldinvokeVirtual操作碼相對的方法的字段。所生成的字節碼看起來像

13: getfield  #6     // Field scala/Tuple2._1:Ljava/lang/Object; 
    16: checkcast  #7     // class java/lang/String 
    19: astore_2 
    20: aload_1 
    21: invokevirtual #8     // Method scala/Tuple2._1:()Ljava/lang/Object; 
    24: checkcast  #7     // class java/lang/String 

不同的是讀一個字段和方法調用之間的區別,即JIT編譯器很樂意爲內聯的方法,它不會有什麼關係表現明智的。

相關問題