当前位置: 首页 > 知识库问答 >
问题:

(Moshi in kotlin)@json vs@field:json

谢涵煦
2023-03-14

共有1个答案

易俊友
2023-03-14

无论在注释中的@:之间放置什么,都指定注释的确切目标

在JVM中使用Kotlin时,会生成大量内容,因此可以将注释放在许多地方。如果您没有指定目标,您将让Kotlin编译器选择注释的放置位置。当您指定目标->时,您就负责了。

为了更好地看到区别,您应该检查IntelliJ/Android Studio中Kotlin字节码的反编译Java代码。

kotlin代码示例

class Example {

    @ExampleAnnotation
    val a: String = TODO()

    @get:ExampleAnnotation
    val b: String = TODO()

    @field:ExampleAnnotation
    val c: String = TODO()
}

反编译的Java代码:

public final class Example {
   @NotNull
   private final String a;
   @NotNull
   private final String b;
   @ExampleAnnotation
   @NotNull
   private final String c;

   /** @deprecated */
   // $FF: synthetic method
   @ExampleAnnotation
   public static void a$annotations() {
   }

   @NotNull
   public final String getA() {
      return this.a;
   }

   @ExampleAnnotation
   @NotNull
   public final String getB() {
      return this.b;
   }

   @NotNull
   public final String getC() {
      return this.c;
   }

   public Example() {
      boolean var1 = false;
      throw (Throwable)(new NotImplementedError((String)null, 1, (DefaultConstructorMarker)null));
   }
}
 类似资料:

相关问答

相关文章

相关阅读