写点什么

Kotlin ‘...has private access in...’ 问题小结

作者:阿策小和尚
  • 2021 年 12 月 18 日
  • 本文字数:529 字

    阅读完需:约 2 分钟

小菜今儿被问到一个问题,使用 Kotlin 时出现 ‘...has private access in...’ 无法获取其他类中实体或属性。用 Java 实现时,一个 public 即可访问到,但是 Kotlin 中只有 varval,在之前加上 public 并不能直接解决问题。

小菜按照自己的理解和在使用方法,简单分析一下。

实体类

在初始化实体时前面加上 open 属性:open var user = UserBean()

由于 Kotlin 中所有类和方法默认都是 final 的,不能直接继承或重写,需要继承的类或类中要重写的方法都应当在定义时添加 open 关键字。

属性:

在初始化属性时前面加上 @JvmField 注解:@JvmField var address = "北京市海淀区",但是在应用 @JvmFieId 注解时需要注意,该属性不可为 null,一旦为 null 则会报空指针,因为用该注解编译后,默认为 @NotNull

Kotlin 生成 .java 文件时属性默认为 private,给属性添加 @JvmField 注解声明可以转成 public

如下例:

1. Fragment 中初始化一个属性 address 和一个实体类 UserBean,并给这个用户实体赋值,在 Activity 中获取这个属性和实体类的信息。

Fragment 初始化和更新

2. 之后在 Activity 中给 address 重新赋值,在 Fragment 中获取 address 属性,更新数据。

Activity 获取和赋值


结果日志


来源: 阿策小和尚

发布于: 3 小时前阅读数: 6
用户头像

还未添加个人签名 2021.05.13 加入

Android / Flutter 小菜鸟~

评论

发布
暂无评论
Kotlin ‘...has private access in...’ 问题小结