gpt4 book ai didi

带有/*package*/后缀的Java package-private可见性成员

转载 作者:行者123 更新时间:2023-11-29 06:58:06 28 4
gpt4 key购买 nike

即使这是我不常发现的东西,在成员之前注释/* package*/的原因是什么?

 /* package */ final void attach(Context context) {
attachBaseContext(context);
mLoadedApk = ContextImpl.getImpl(context).mPackageInfo;
}

这是 AOSP 第 180 行的示例: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/app/Application.java

最佳答案

默认情况下,Java 中的成员使用包级访问 - 它们可以被同一包中的其他类访问,但不能被其他包中的类访问。

实际上很少使用此功能,因为您通常希望所有变量都是私有(private)的(或 protected ),并且您的方法是私有(private)的(供自用)、 protected 或公共(public)的。

没有明确的“包”修饰符,所以没有简单的方法可以一眼就知道缺少修饰符是因为作者忘记包含正确的修饰符,还是因为他们故意希望成员具有包级访问权限.

这就是为什么,在极少数情况下,当您想使用包时,最好在方法声明前放置一个/* package */注释,以清楚地说明您是有意使用此访问级别,而不是而不是不小心忘记指定一个。

就编译器而言,注释本身实际上并没有做任何事情——它只是让代码更容易理解。

关于带有/*package*/后缀的Java package-private可见性成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30943255/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com