在Scala中,下面的兩個功能不同的是:Scala的多個參數列表是如何被編碼成JVM字節碼
def paren(): Int = 42
def noparen: Int = 42
第一個具有零個參數1名參數列表,而下一個有0參數列表。
然而,隨着javap -v
看時,他們的字節碼是相同的:
public int paren();
Signature:()I
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: bipush 42
2: ireturn
LocalVariableTable:
Start Length Slot Name Signature
0 3 0 this LParentheses$;
LineNumberTable:
line 4: 0
public int noparen();
Signature:()I
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: bipush 42
2: ireturn
LocalVariableTable:
Start Length Slot Name Signature
0 3 0 this LParentheses$;
LineNumberTable:
line 5: 0
哪裏Scala編譯器存儲參數列表的尺寸是多少?
Martin Odersky在Java 1.0時間框架內設計並實現了泛型,事實上,他編寫的Java編譯器已經提供了1.2(並且仍然是Oracle JDK和OpenJDK附帶的),只是泛型位被禁用。註釋僅在Java 5中添加。如果Annotations當時存在,或者泛型已經在後來被重新設計,那麼誰知道呢,也許我們現在已經將泛型化了。 –