kotlin静态变量在java的使用

2023-04-09  本文已影响0人  奈文_摩尔

一、使用

在Kotlin中的几种声明方式

object KtTest {
    
    const val a=1

    var b: Int=2

    @JvmField
    var c: Int=3

    @JvmStatic
    var d:Int=4
}

在Java中的调用方式

public class JavaTest {

   int a=KtTest.a;
   int b=KtTest.INSTANCE.getB();
   int c=KtTest.c;
   int d=KtTest.getD();
}

将Kotlin转换成Java代码:

public final class KtTest {
   public static final int a = 1;
   private static int b;
   @JvmField
   public static int c;
   private static int d;
   @NotNull
   public static final KtTest INSTANCE;

   public final int getB() {
      return b;
   }

   public final void setB(int var1) {
      b = var1;
   }

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

   public static final int getD() {
      return d;
   }

   public static final void setD(int var0) {
      d = var0;
   }

   private KtTest() {
   }

   static {
      KtTest var0 = new KtTest();
      INSTANCE = var0;
      b = 2;
      c = 3;
      d = 4;
   }
}

二、总结

1、使用const val修饰的属性为全局常量,转换为java代码是public static final修饰的,所以可以直接通过类名.调用
2、使用var修饰的属性转换为java代码为私有成员属性,并暴露get、set方法,通过类的单例对象调用方法获取
3、使用@JvmField修饰的var属性转换为java代码是public static修饰的静态属性,所以可以直接通过类名.调用
4、使用@JvmStatic修饰的var属性转换为java代码是private static修饰的静态属性,可通过静态方法调用

上一篇 下一篇

猜你喜欢

热点阅读