我知道Java中的程序包级别保护如何工作。我 读
了很多代码(包括很多开源的东西),似乎没人在使用它。整个保护级别对我来说似乎有点不对(我在一周中的任何一天都拥有C#的内部)。
是否存在合法的现实使用案例?
编辑:问这个问题有点太晚了,我意识到我忘了排除包保护实现类的“标准”模式,可能会提供公共接口的实现。每个人都使用这些,正如答复中多次提到的那样。我仍然认为对此问题有很多不错的答复。
包级可见性有两个很好的用法(以我的经验):
1)在公共API中定义“内部”类。通常,您会将接口和核心工厂定义为公共,将“内部”实现定义为程序包级别。然后,公共工厂可以构造包级别的实现类,并将它们作为公共接口的实例返回。这很好地允许用户仅访问应有的内容。
缺点是您必须将所有这些东西放在同一个包中,这对于任何大小合理的API几乎都不是一个好主意。 希望Java 7中的JSR
294
/ modules / Project
Jigsaw
将提供一种替代方法,方法是指定一个新的可见性修饰符(module
),该修饰符可用于跨包访问模块内的类,而无需在模块外使它们可见。您可以在本文中找到一个示例,说明如何进行此操作。
2)单元测试是另一个常见用例。通常,您会看到一个src树和一个测试树,而本来是私有的则是包级别的,以便同一(并行)包中的单元测试能够访问否则隐藏的方法以检查或操纵状态。
问题内容: Java中的守护程序线程是什么? 问题答案: 守护程序线程是在程序完成但线程仍在运行时不会阻止JVM退出的线程。守护程序线程的一个示例是垃圾回收。 你可以使用该方法在线程启动之前更改守护程序属性。
本文向大家介绍什么是Java中的守护程序线程?,包括了什么是Java中的守护程序线程?的使用技巧和注意事项,需要的朋友参考一下 Java中的守护程序线程是在后台连续执行的线程。您可以使用setDaemon()方法设置线程守护程序。 示例 输出结果
问题内容: 什么时候以及为什么要在类中使用,和函数以及变量?它们之间有什么区别? 例子: 问题答案: 你用: 范围,以使该属性/方法可从任何位置,对象的其他类和实例使用。 当您希望您的属性/方法仅在其自己的类中可见时。 要使属性/方法在扩展当前类的所有类(包括父类)中可见时显示范围。 更多:( 有关全面信息) PHP手册-可见性
问题内容: 我知道Deamon是后台线程。我们可以通过调用创建自己的守护程序线程。 我的问题是:为什么以及何时需要将我们的线程创建为守护程序线程? 问题答案: 当所有正在运行的线程都是守护程序线程时,JVM将退出。因此,想象一下您正在编写一个简单的游戏,其中您的主要方法一直循环直到您决定退出为止。想象一下,在游戏开始时,您启动了一个线程,该线程将不断轮询某些网站以触发警报。当您决定结束游戏时,您希
5.2 权限和保护级别 权限内有四种类型的保护级别,它们包括正常,危险,签名和签名或系统。 根据保护级别,权限被称为正常权限,危险权限,签名权限或签名或系统权限。 以下部分中使用这些名称。
问题内容: 这是允许的: 但这不是: 为什么不?为什么不能在没有类型的情况下将函数外部的短变量声明视为常规声明?只是为了简化解析? 问题答案: 据伊恩·兰斯·泰勒(Ian Lance Taylor)在公开宣布后不久在此主题中提到: 在顶层,每个声明都以关键字开头。这简化了解析。