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 获取和赋值


结果日志

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

小菜公众号
目录
相关文章
|
JavaScript
vue3-在自定义hooks使用useRouter 报错问题
vue3-在自定义hooks使用useRouter 报错问题
2652 0
|
SQL 缓存 Java
殷浩详解DDD系列 第三讲 - Repository模式
# 第三讲 - Repository模式 **写在前面** 这篇文章和上一篇隔了比较久,一方面是工作比较忙,另一方面是在讲Repository之前其实应该先讲Entity(实体)、Aggregate Root(聚合根)、Bounded Context(限界上下文)等概念。但在实际写的过程中,发现单纯讲Entity相关的东西会比较抽象,很难落地。所以本文被推倒重来,从Repository
39235 8
|
Java Windows
【问题总结】【JAVA开发】(一)Intellj JVM启动报错
一)启动前提,最新社区版intellj 默认支持1.9 以上。将默认jdk20 替换成jdk8 出现以下问题 Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Unrecognized option: --add-opens
1848 0
|
XML Java 测试技术
Springboot使用 @PostConstruct 和 @PreDestroy 了解 Bean 的生命周期
本文深入解析了 Spring 框架中 Bean 的生命周期,重点介绍了 `@PostConstruct` 和 `@PreDestroy` 注解的使用及其在初始化和销毁阶段的作用。内容涵盖 Bean 生命周期的各个阶段、注解的执行顺序、应用场景及限制,并对比了其他生命周期管理方式,如 `InitializingBean`、`DisposableBean` 和 XML 配置,帮助开发者更好地掌握 Spring 容器中 Bean 的管理机制。
693 0
|
10月前
|
编解码 UED 开发者
UI&UE设计规范
本文档为移动端开发人员结合十年经验与UI/UE实践总结的设计规范,涵盖设计原则、字体、配色、布局及组件使用标准,旨在统一产品视觉语言,提升用户体验与团队协作效率,适用于产品经理、设计师及开发者。
4200 0
UI&UE设计规范
视频格式转换与DRM解除
随着流媒体平台的普及,用户对视频下载和转换工具的需求不断增加。本文介绍了几款优秀工具,如CleverGet、PlayOn Cloud、CocCut、StreamGaGa和PlayOn Desktop,帮助用户更好地下载、转换和管理视频内容。这些工具不仅提升了视频获取的便利性,还提供了多种选择,满足不同需求。使用时请确保合法合规。
【微信公众平台对接】有关【上传图文消息内的图片获取URL】调用示例
【微信公众平台对接】有关【上传图文消息内的图片获取URL】调用示例
755 0
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
652 2
Ping 命令配置 -c、-i、-w 指令使用
Ping 命令配置 -c、-i、-w 指令使用
2234 0