Kotlin 注解之JvmStatic

   日期:2020-10-19     浏览:151    评论:0    
核心提示:class TestJvmStatic { companion object { const val a = 1 val b = 2 var c = 3 @JvmField var d = 4 @JvmField val e = 5 @JvmStatic fun doOperateA() { } fun doOp.
class TestJvmStatic {

    companion object {
        const val a = 1
        val b = 2
        var c = 3

        @JvmField
        var d = 4

        @JvmField
        val e = 5

        @JvmStatic
        fun doOperateA() {

        }

        fun doOperateB() {}

    }
}

转换成Java代码如下:

public final class TestJvmStatic {
   public static final int a = 1;
   private static final int b = 2;
   private static int c = 3;
   @JvmField
   public static int d = 4;
   @JvmField
   public static final int e = 5;
   public static final TestJvmStatic.Companion Companion = new TestJvmStatic.Companion((DefaultConstructorMarker)null);

   @JvmStatic
   public static final void doOperateA() {
      Companion.doOperateA();
   }

   
   public static final class Companion {
      public final int getB() {
         return TestJvmStatic.b;
      }

      public final int getC() {
         return TestJvmStatic.c;
      }

      public final void setC(int var1) {
         TestJvmStatic.c = var1;
      }

      @JvmStatic
      public final void doOperateA() {
      }

      public final void doOperateB() {
      }

      private Companion() {
      }

      // $FF: synthetic method
      public Companion(DefaultConstructorMarker $constructor_marker) {
         this();
      }
   }
}

 

在Java文件中调用:

TestJvmStatic.doOperateA();
TestJvmStatic.Companion.doOperateB();
int a = TestJvmStatic.a;
int e = TestJvmStatic.e;
int d = TestJvmStatic.d;
TestJvmStatic.Companion.getB();
TestJvmStatic.Companion.getC();

通过对比可以发现:@JvmStatic 和 @JvmField 注解,才能使方法或者字段暴露为静态方法或静态字段,这样Java调用方式和正常的Java静态方法的调用方式一样了。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服