В 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 компилятор магазин размерность списков параметров?
Мартин Одерски разработал и внедрил Generics во время Java 1.0 таймфрейма, на самом деле написанный им Java-компилятор уже был отправлен с 1.2 (и по-прежнему остается в комплекте с Oracle JDK и OpenJDK), как раз с отключенными битами Generics. Аннотации были добавлены только в Java 5. Если раньше существовали аннотации, или Generics были позже разработаны, кто знает, может быть, мы бы уже доработали Generics. –