不同的java包&能见度

时间:2013-03-11 15:59:57

标签: java visibility packages naming

我问的问题是关于一个非常频繁的主题,但我没有找到我的确切问题,所以我明确地问它。

我正在用java编程,我需要实现一些类,比方说A,B,C和D. 它们都是SDK的一部分,只有D将公开(对于将使用我的sdk的开发人员可见)。

A,B& C是处理不同主题的类(比如蓝牙通信,Web服务使用和专有算法),尽管它们需要相互通信。 我想根据他们的“技能”(公共方法,蓝牙,Web服务,算法)在课程中划分课程,但如果我创建不同的包,他们就不会彼此可见。

所以,我在这里看到的唯一一个实现是一个独特的包而且没有修饰符(所以他们会“看到”彼此,用户只能访问D类)。 有没有办法创建不同的包,以便让我以更好的方式组织我的sdk? (想象很多课程,很容易变得一团糟:))

提前感谢您的帮助

乔治

3 个答案:

答案 0 :(得分:1)

我认为正确的方法是拥有一个包含公共接口和数据的包(例如枚举,简单类,如Point等......)。 所有其他包将参考这个常见的包, 其类将实现公共接口。

这也为您提供了不同包之间真正解耦的好处。

答案 1 :(得分:1)

如果我理解你要做的事情,我认为Java语言不会为你提供一种方法。

我对您的问题的理解是“我正在开发一个API,我只想在其中公开某些类和/或方法;包中的其他类和/或方法需要由暴露的类使用,但我做不希望它们被标记为公共,因此可供使用API​​的程序员“。

你没有说为什么这是必要的,或者是可取的。

该语言不支持此方式的可见性。您可以通过混淆器运行要隐藏的代码,以(大大)阻止任何人理解这些方法是什么并调用它们,当然也不会混淆您想要使用的那些,但这就像我可以提出的那样接近用。

答案 2 :(得分:0)

您可以为您的类使用不同的包,只需确保它们是公共的,以便其他包中的其他类可以看到tyhey。