Доступ к общедоступным полям kotlin из Java напрямую без получения
Ниже приведен пример шаблона из Android (просто пример, не интересующийся особенностями Android):
/*Im a kotlin file*/
class ListItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val text: = itemView.my_view
}
Тогда шаблон таков, что вы получаете доступ к текстовому полю как таковому:
/*Im a Java file*/
holder.text.setText("Metasyntactic variable");
К сожалению, большой файл с заданной структурой выполняет описанные выше действия, а затем имеет:
/*Im a Java file, but this particular holder is a kotlin file*/
holder.getText().setText("Metasyntactic variable");
Возможно ли это решить? Может быть, с некоторыми @Jvm
аннотирование
1 ответ
Решение
Это @JvmField
:
Если вам нужно представить свойство Kotlin как поле в Java, вам нужно аннотировать его аннотацией @JvmField. Поле будет иметь ту же видимость, что и базовое свойство. Вы можете аннотировать свойство с помощью @JvmField, если оно имеет вспомогательное поле, не является частным, не имеет модификаторов open, override или const и не является делегированным свойством.