栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于Kotlin修饰符internal和Java的默认修饰符的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Kotlin修饰符internal和Java的默认修饰符的区别

前言

在讲述问题前我们先了解下Java和Kotlin可见性修饰符。

Java可见性修饰符public、protected、default(默认修饰符)、private可见性如下:

修饰符作用域当前类同一个包同一个包继承类不同包继承类不同包
public
protected
default
private

Kotlin可见性修饰符public(默认修饰符)、proteced和private和Java一致,区别在于Kotlin没有default取而代之的是internal;关于internal修饰符,官方文档对于它的描述如下:

可见性修饰符internal意味着该成员只在相同模块内可见。更具体地说,一个模块是编译在一起的一套 Kotlin 文件:
一个 IntelliJ IDEA 模块;
一个 Maven 项目;
一个 Gradle 源集(例外是 test 源集可以访问 main 的 internal 声明);
一次 Ant 任务执行所编译的一套文件

问题发现

在Kotlin中,默认修饰符是public,整个项目可见;当你编写SDK打包成aar给其它开发者调用时,为了隐藏某个无需开放的类对象,使用internal对整个类进行修饰。例如给某个中间类使用了internal修饰符,那么继承了该类的子类只能使用也必须使用internal或者private进行修饰,无法使用public进行修饰;而恰好这些子类你需要对外开放的话就很麻烦。

解决方法

1、将父类的修饰符修改为public,然后将父类不开放的属性和函数使用internal修饰
2、使用java来编写父类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583891.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号