套餐和知名度?

时间:2014-04-19 06:57:55

标签: java

我正在制作SDK而我正在尝试将类分离到不同的包,这些类使用其他一些共享类。问题是如果我公开共享类,每个人都能看到它们,而不仅仅是我的类。什么是让我们的应用程序只能访问它们的正确方法?

打包MyClass1

包装b MyClass2

打包c public MySharedClass

因为c是公共的,MySharedClass将能够访问它,但问题是它也将对世界可见,我该如何防止它?

5 个答案:

答案 0 :(得分:1)

您正在寻找所谓的package-private修饰符(实际上没有显式修饰符)

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 1 :(得分:1)

我们无法阻止它。 Java没有jar专用访问级别。

答案 2 :(得分:1)

java中的包是平的:如果你想从包a访问包c中的东西,包x中的API用户也可以访问它。

让你的包装足够大,以便它们可以自包含。如果您发现自己处于这种情况,那么您正试图制作太小的包。

答案 3 :(得分:0)

您可以将它们设为protected classes,只有您的课程才能访问它们。

答案 4 :(得分:0)

创建一个记录为内部包的包,不得由客户端使用。

Java中没有办法只为某些包公开一个类:它对每个人都是公开的,或者是包私有的(仅在声明的包中公开)。

我认为有一个模块的建议可以更好地控制类的可见性,但至少我们必须等待Java 8。