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


结果日志

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

小菜公众号
目录
相关文章
|
4月前
|
Android开发
AS错误:Duplicate class kotlin.xxx.jdk8.DurationConversionsJDK8Kt found in modules kotlin-stdlib-1.8.22
本文描述了Android Studio中遇到的"Duplicate class found in modules"错误的解决方法,通过在`app/build.gradle`文件中使用`constraints`来排除过时的kotlin-stdlib-jdk7和kotlin-stdlib-jdk8依赖,解决了依赖冲突问题。
291 1
|
6月前
|
Kotlin
Kotlin之Hello,World
Kotlin之Hello,World
190 1
|
6月前
|
存储 API Kotlin
Kotlin中的Set集合
Kotlin中的Set集合
|
安全 编译器 Android开发
Android基础--kotlin(十)Kotlin 枚举类
Android基础--kotlin(十)Kotlin 枚举类
|
消息中间件 存储 Java
Kotlin中正确的使用Handler
如果`Handler`在`Activity`中是以非静态内部类的方式初始化的,那么`Handler`默认就会持有`Activity`的实例,因为在`Java`中:**非静态内部类默认会持有外部类的实例,而静态内部类不会持有外部类的实例**
543 0
|
IDE 编译器 开发工具
深入学习 Kotlin 特色之 Sealed Class 和 Interface
深入学习 Kotlin 特色之 Sealed Class 和 Interface
DHL
|
存储 算法 前端开发
Kotlin Sealed 是什么?为什么 Google 都用
在上一篇文章 Google 推荐在项目中使用 Sealed 和 RemoteMediator 中介绍了如何使用 Sealed Classes 在 Flow 基础上对网络请求成功和失败进行处理,而这篇文章是对 Sealed Classes 更加深入的解析,结合函数式编程功能很强大,掌握并且灵活运用它,需要大量的实践。
DHL
230 0
Kotlin Sealed 是什么?为什么 Google 都用
|
Android开发 Kotlin
【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )
【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )
768 0
【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )
|
Java Kotlin
Kotlin 序列化Parcelable/Serializable
Kotlin 序列化Parcelable/Serializable
1165 0
|
存储 前端开发 JavaScript
Kotlin Maps:五个基本函数
Kotlin Maps:五个基本函数 映射,也称为关联数组,是任何编程语言中的核心数据类型。列表和映射可能是最常见的数据类型。因此,熟悉它们是学习一门新语言的必要步骤。
181 0
Kotlin Maps:五个基本函数