Kotlin ‘...has private access in...’ 解决

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

      小菜今儿被问到一个问题,使用 Kotlin 时出现‘...has private access in...’无法获取其他类中实体或属性。用 Java 实现时,一个 public 即可访问到,但是 Kotlin 中只有 var 和 val,在之前加上 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 获取和赋值


结果日志

      以下是小菜公众号,欢迎闲来关注~

小菜公众号
目录
打赏
0
0
0
0
169
分享
相关文章
一分钟“零代码”生成API,DataWorks数据服务快速上手指南
DataWorks数据服务提供了快速生成API的能力,可以一分钟“零代码”生成API,本文是一篇快速上手指南,帮助你快速认识数据服务。
12187 0
使用Python实现深度学习模型:智能健康监测与预警
使用Python实现深度学习模型:智能健康监测与预警
903 9
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
Cesium案例解析(五)——3DTilesPhotogrammetry摄影测量3DTiles数据
Cesium案例解析(五)——3DTilesPhotogrammetry摄影测量3DTiles数据
253 0
SpringBoot中如何使用Cookies
本文介绍了如何在Spring Boot中操作HTTP Cookie。内容包括:使用@CookieValue注解读取Cookie,通过HttpServletResponse设置Cookie,读取所有Cookie,设置Cookie过期时间,理解HTTPS与Cookie安全,使用HttpOnly Cookie防止XSS攻击,以及如何删除Cookie。示例代码展示了各种操作的方法。
265 0
Failed to transform artifact 'butterknife-runtime.aar (com.jakewharton:butterknife-runtime:10.1.0)'
Failed to transform artifact 'butterknife-runtime.aar (com.jakewharton:butterknife-runtime:10.1.0)'
IDEA统计代码行数
编写文档需要统计到对应项目的java代码行数,idea有一款插件可以很好的做到想要的效果
IDEA统计代码行数
解决 Java 闭包不能访问外部变量
在使用 java 中的 lambda 表达式时,如果试图修改外部变量,编译器会报错:Variable used in lambda expression should be final or effectively final,告诉我们 count 变量必须设置成 final 类型才可以让闭包来访问。
解决 Java 闭包不能访问外部变量
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等