将 java 适配器文件转换为 kotlin 时,我可以删除 @JvmField 注释吗

问题描述

嗨,在我的 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;
  }
  }