kotlin静态变量在java的使用

一、使用

在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修饰的静态属性,可通过静态方法调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容