代码之家  ›  专栏  ›  技术社区  ›  BRDroid

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

  •  0
  • BRDroid  · 技术社区  · 4 年前

    嗨,在我的java列表视图适配器中,我将其转换为Kotlin,我的viewholder类中的字段现在有 @jvmField annotaion

    有这个对吗,应该用什么来代替

    这是我的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

    0 回复  |  直到 4 年前
        1
  •  2
  •   ADM    4 年前

    @JvmField 指示kotlin编译器应生成的天气 getters/setters 无论是否拥有此房产。如果设置了,则不会生成 吸气器/排气器 对于这个财产。在这种情况下,你可以省略它。

    要验证这一点,您可以去- Double shift -> show byte code 并对其进行反编译。您可以看到与 @JvmField 该领域已公开。

    public static final class ViewHolder {
      @BindView
      @JvmField
      @Nullable
      public TextView ticketNo;
     }
    

    没有it,字段是私有的,通过暴露 吸气器/排气器 .

    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;
      }
      }