问题标签 [package-private]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 为什么 JUnit 5 默认访问修饰符更改为 package-private
为什么 JUnit 5 package-private 中的默认访问修饰符是?
JUnit 4 中的测试必须是公开的。
将其更改为包私有有什么好处?
java - 当父类是包私有并且来自另一个模块时,javadoc生成“扩展对象”而不是真正的类
我的文件结构。我有两个相邻的目录。模块 1 和模块 2。
模块1:
src\hu\package1\TestPackagePrivateClass.java:
src\hu\package1\PackagePrivateClass2.java:
src\hu\package1\TestPublicClass.java:
所以2个抽象包私有类和1个公共抽象类。
模块2:
src\hu\package1\TestChildClass.java:
src\hu\package1\TestChildClass2.java:
src\hu\package2\ThirdChildClass.java:
因此,我运行以下 2 个命令...模块 1 中的第一个 2 和模块 2 中的第二个 2:
一切正常,没有警告,没有错误。
但是我的问题是,在专门为 TestChildClass 为 module2 生成的 javadoc 中,它显示它是从 Object 扩展的,而不是从 TestPackagePrivateClass 扩展的。然而,getPackagePrivateClass2 的返回类型完美显示。请注意,对于从 module1 扩展 TestPublicClass 的 TestChildClass2,父类是正确的。
因此,当它来自另一个模块并且它不是公共的时,似乎 javadoc 没有显示父类。有解决方案吗?
java - Java中包可见性的继承
我正在寻找以下行为的解释:
- 我有 6 个类,{aA,bB,cC,aD,bE,cF},每个类都有一个包可见 m() 方法来写出类名。
- 我有一个 a.Main 类,它有一个对这些类进行一些测试的 main 方法。
- 输出似乎没有遵循正确的继承规则。
以下是课程:
主要课程在package a
:
这是输出:
这是我的问题:
1)我知道D.m()
hides A.m()
,但是演员A
应该暴露 hiddenm()
方法,这是真的吗?还是尽管打破了继承链,但还是会被D.m()
覆盖?A.m()
B.m()
C.m()
2)更糟糕的是,下面的代码显示了覆盖效果,为什么?
为什么不在这部分:
和这个?
我正在使用 OpenJDK javac 11.0.2。
编辑:第一个问题由如何覆盖具有默认(包)可见性范围的方法来回答?
在类 D 中声明或继承的实例方法 mD,从 D 覆盖在类 A 中声明的另一个方法 mA,如果以下所有条件都为真:
- A 是 D 的超类。
- D 不继承 mA(因为跨越封装边界)
- mD 的签名是 mA 签名的子签名(第 8.4.2 节)。
- 以下情况之一是正确的:[...]
- mA 在与 D 相同的包中声明为具有包访问权限(本例),并且 D 声明 mD 或 mA 是 D 的直接超类的成员。 [...]
但是:第二个问题仍未解决。
unit-testing - 我怎样才能只开课来测试课?
我主要是一名 Java 开发人员,在 kotlin 中编写单元测试时对结构感到好奇,
假设在 kotlin 中没有包私有
private
限制对文件的可见性
internal
限制对模块的可见性
我怎样才能只开课来测试课?
我必须在 kotlin 类中编写测试还是对所有模块(内部)开放类?
只为单元测试打开方法的 kotlin 方法是什么?
编辑
在@bentolor 的kotlin 讨论中发现了类似的问题/请求:
我应该如何正确进行单元/白盒测试?我想编写测试代码来测试类内部功能,我不想将其暴露给除我的测试类之外的其他类。
包保护的可见性是实现这一目标的绝佳方式。而 Kotlin 现在要求我将这些方法有效地公开,并在整个项目中散布组件的可见 API,以便能够测试它们。
在我看来,内部或多或少是公开的,因为它的范围要大得多。大多数项目都有。大约 1 - 5 个 Kotlin 意义上的“模块”。
在这里非常强烈地要求/倡导本地包的可见性。
javascript - Javascript:在内部导出模块内部的东西
在 Java 中,我们有 4 个可见性级别。除了public
and private
,我们还有protected
一个级别和一个默认级别(没有修饰符),也称为 "package-local" 或 "package-private"。
修饰符 | 班级 | 包裹 | 子类 | 世界 |
---|---|---|---|---|
上市 | 是 | 是 | 是 | 是 |
受保护 | 是 | 是 | 是 | X |
没有修饰符 | 是 | 是 | X | X |
私人的 | 是 | X | X | X |
见:https ://www.programcreek.com/2011/11/java-access-level-public-protected-private/
我特别需要 Javascript 中的这种“包私有”级别。Javascript模块有类似的方法吗?
我正在编写一个库(NPM包),我想要export
一些东西(function
,class
等),但不在模块的公共 API 中(供库的消费者使用)。只是在我的模块文件之间本地使用。
java - 如何在 ViewModel android 中使用 mBagOfTags?
我有实现 Closeable 接口的对象,并且希望在我的 ViewModel 清晰时调用 close() 方法。我知道要实现 ViewModel 的 onCleared 方法,但我想在 ViewModel 中使用 mBagOfTags。mBagOfTags 处理可关闭对象(在 clear 方法中调用 close 方法)并且不想在 ViewModel 中创建新的地图对象。如何使用 ViewModel 的 mBagOfTags ?
ViewModel 中的 mBagOfTags 及其成员函数是包私有访问修饰符。
这是android团队开发的ViewModel类。
我的 ViewModel 在另一个包中。