问题描述
嗨,在我的 Java 列表视图适配器中,我将其转换为 Kotlin 并且我的 viewholder 类中的字段现在有 @jvmField
注释
这个是正确的,应该用什么代替
这是我的 java viewholder 类
public static class ViewHolder {
@BindView(R.id.ticket_no)
@Nullable
public TextView ticketNo;
}
转换为 kotlin 文件时
@JvmField
@BindView(R.id.ticket_no)
var ticketNo: TextView? = null
@JvmField 的注解是否可以去掉,如果可以用什么代替
请推荐
提前致谢 R
解决方法
@JvmField
表示 kotlin 编译器是否应该为此属性生成 getters/setters
的天气。如果设置了它,则不会为此属性生成 getters/setters
。在这种情况下,您可以省略它。
要验证这一点,您可以去 - Double shift -> show byte code
并反编译它。您可以看到与 @JvmField
的区别,该字段公开为公开。
public static final class ViewHolder {
@BindView
@JvmField
@Nullable
public TextView ticketNo;
}
没有它的字段是私有的,并通过 getters/setters
公开。
public static final class ViewHolder {
@BindView
@Nullable
private TextView ticketNo;
@Nullable
public final TextView getTicketNo() {
return this.ticketNo;
}
public final void setTicketNo(@Nullable TextView var1) {
this.ticketNo = var1;
}
}