Java调用Kotlin——可见属性的映射

本文详细解析了Kotlin中不同访问修饰符的属性如何映射为Java代码,包括private、protected、internal和public等关键字的区别,以及它们在Java中的具体实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据官方文档及编译后的class文件,可以得出:
Kotlin的可见属性以以下方式映射到Java中:

● private 成员仍编译成 java中private 成员

● private top-level declarations 编译成 java中package-local declarations。默认情况下,top-level的成员或方法会在当前包下被单独编译成“文件名+kt”的class文件,包含此private属性或方法,且仅原kotlin文件内的定义的类可以调用,其他类无法调用。对于非const属性,会通过“文件名+Kt.access$get+属性+$p()”的方式调用。

● protected 编译成 java中protected (不过需要注意,Java中的protected允许从本包内的其他类访问,但Kotlin不是,kotlin总是生成get/set方法以供调用,不能直接访问,所以java类有更广泛的范围访问。)

● internal编译成java中 public 。internal类的成员经历了名称修改,使得从Java中意外地使用它们变得更加困难,并且允许根据Kotlin规则对具有相同签名的成员进行重载,这些成员彼此看不到彼此;编译成class时会生get/set$production_sources_for_module_$module_name()的方法

● public 仍编译成 public.

参考:http://kotlinlang.org/docs/reference/visibility-modifiers.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值