97得票7回答
“包私有”成员访问不就是默认的(无修饰符)访问吗?

我有点困惑一些文档使用的术语"包私有(package private)", 以及使用 "默认访问(default access)"。难道包私有和默认访问不都是指受保护的吗?

75得票8回答
Java中包私有类的优缺点是什么?

我最近在学习Java,了解到package-private类的概念,如果我们不指定任何访问修饰符,这是默认的。但后来我意识到: 我很少看到使用package-private类。这是出于什么原因呢?例如,它有严重缺陷、冗余或仅仅是因为我读得不够多?是否有强有力的理由支持/反对其使用? 如果在...

68得票2回答
为什么枚举可以有包私有构造函数?

既然枚举构造函数只能被其常量调用,那么为什么它可以是包私有的?

65得票5回答
使用反射访问不可见的类

我正在尝试使用反射获取一个非可见类的实例,也就是包私有类。我想知道是否有一种方法可以将修饰符修改为public,然后使用Class.forName访问它。但是我现在尝试这样做时,会出现错误提示,告诉我不能这样操作。不幸的是,Class类没有setAccessible方法。

40得票2回答
为什么JUnit 5的默认访问修饰符改为包私有?

为什么JUnit 5中默认的访问修饰符是包可见性? 在JUnit 4中,测试必须是public。 将其改为包可见性的好处是什么?

37得票3回答
使内部函数对单元测试可见

如果测试代码与生产代码不在同一模块(这很常见),那么使内部函数对测试可见的最佳方法是什么? 在Java中,我会将生产代码和测试代码放在同一个包中,并使要测试的方法包范围内(此外,如果将其设置为包范围而不是私有的唯一原因是测试,则添加@VisibleForTest注释)。不幸的是,Kotlin...

22得票1回答
Lambda表达式在运行时出现java.lang.BootstrapMethodError错误

在一个包(a)中,我有两个功能接口:package a; @FunctionalInterface interface Applicable<A extends Applicable<A>> { void apply(A self); } package a...

22得票4回答
Java中包可见性下的继承

我正在寻找以下行为的解释: 我有6个类,{a.A,b.B,c.C,a.D,b.E,c.F},每个类都有一个包可见的m()方法,该方法会输出类名。 我有一个a.Main类,其中包含一个主方法,用于对这些类进行一些测试。 输出结果似乎不遵循正确的继承规则。 以下是这些类:package a...

19得票2回答
为什么C#没有包级私有?

我正在学习C#,来自Java世界,有点困惑的是C#没有"package private"。大多数评论都是"你不能这样做;这个语言不是这样设计的"。我还看到了一些解决方法,包括internal和partial,还有注释说这些解决方法违反了语言的设计。 C#为什么会被设计成这样?另外,如果我想做...

14得票1回答
Scala 中的包私有范围可以从 Java 中访问

我刚刚发现一个有趣的现象,当从Scala代码生成的字节码被Java代码使用时,Scala作用域的行为非常奇怪。请考虑以下使用Spark(Spark 1.4,Hadoop 2.6)的代码片段:import java.util.Arrays; import java.util.List; imp...