Я пытался использовать @JvmOverloads для создания перегруженных методов для функции Kotlin.Просто из любопытства я попытался взглянуть на байт-код и декомпилированный код Java.Но я не мог понять смысл кода Java.
Вот простой код Котлина
class MyClass {
@JvmOverloads
fun doSomething(a : Int = 200, b : Int = 300){
}
}
Ниже приведен декомпилированный код Java:
public final class MyClass {
@JvmOverloads
public final void doSomething(int a, int b) {
}
// $FF: synthetic method
// $FF: bridge method
@JvmOverloads
public static void doSomething$default(MyClass var0, int var1, int var2, int var3, Object var4) {
if((var3 & 1) != 0) { // What does this do ?
var1 = 200;
}
if((var3 & 2) != 0) { //Where did var3 come from ?
var2 = 300;
}
var0.doSomething(var1, var2);
}
@JvmOverloads
public final void doSomething(int a) {
doSomething$default(this, a, 0, 2, (Object)null);
}
@JvmOverloads
public final void doSomething() {
doSomething$default(this, 0, 0, 3, (Object)null);
}
}
Пожалуйста, объясните или укажите нужные ресурсы, которые могут помочья узнаю больше о том же.Спасибо.