return this * this
}
val x = 2.foo()
}
public final int foo(int);
Code:
0: iload_1
1: iload_1
2: imul
3: ireturn
public final int getX();
Code:
0: getstatic #15 // Field x:I
3: ireturn
(scala)
object T2 {
implicit class IntOps(val i: Int) extends AnyVal { def foo = i * i }
val x = 2.foo
}
public static int IntOps(int);
Code:
0: getstatic #16 // Field T2$.MODULE$:LT2$;
3: iload_0
4: invokevirtual #22 // Method T2$.IntOps:(I)I
7: ireturn
public static int x();
Code:
0: getstatic #16 // Field T2$.MODULE$:LT2$;
3: invokevirtual #18 // Method T2$.x:()I
6: ireturn
окей, зачем в скале "лишние" invokevirtual?
(мб я реально чего не понимаю)
какой из инвоуквирчлов тебя беспокоит?
Обсуждают сегодня