Я объявил «переменную выражения» (извините, я не уверен, как ее назвать) в классе Kotlin:
class Something {
var onSelectionListener: (view: View, position: Int) -> Unit = {_, _ -> }
}
Так что я могу использовать лямбда-выражение для назначения выражения этой переменной.Он прекрасно работает при вызове этого класса из другого класса Kotlin.
something.onSelectionListener = { ... }
Но теперь я хочу позволить классу Java иметь возможность:
something.setOnSelectionListener(new Something.OnSelectionListener() {
@Override
public void onItemSelected(View view, int position) {
//...
}
});
Это все о именование .Потому что это уже может сделать:
something.setOnSelectionListener(new Function2<View, Integer, Unit>() {
@Override
public Unit invoke(View view, Integer integer) {
//....
}
});
Но эти Function2
, invoke
и Unit
плохи для читабельности.
Как я могу изменить эти сгенерированные имена (я ожидаю таммогут быть некоторые аннотации, которые могут достичь этого), сохраняя при этом эффект, что вызов из класса Kotlin все еще может использовать Lambda для назначения выражения вместо создания анонимного класса?