有没有办法在java中使用package-private来允许其他包访问?

Pin*_*ski 5 c# java internal package-private

所以我已经在C#工作了很多年,现在正在使用Java.在C#中,您可以使用internal关键字从公共视图中隐藏类/方法,但如果您特别授予它,则允许某些程序集/包访问.当我环顾Java时,我看不到任何与内部直接相同的东西.

我发现了包私有.然而,这使它完全隐藏在外面的世界.Java中是否有一种方法允许某些其他包访问内部代码而不将其公开?

如果你问为什么我会这样做,这个答案通常是单元/集成测试,或者需要让某些可信任的包访问代码而不是重复它.我知道有些人认为你不应该测试私有/内部代码.我也知道允许内部访问通常不是很好的软件工程.我对这些话题的讨论并不感兴趣,只是好奇你是否可以做我想做的事情.

谢谢.

Kru*_*lur 4

Java 不像 .NET 那样有程序集的概念(至少现在还没有)。最接近的是 OSGi 包,它有这个概念(x-internal、x-friend 等),但这并不是真正的核心 Java。

如果您不使用 OSGi,则无需经历这种复杂的情况。只需确保您的单元测试与被测类位于同一包中即可。Maven 目录结构(即使您不使用 Maven,这也是一个不错的选择)可以使用 等进行设置src/main/javasrc/test/java