我正在制作SDK而我正在尝试将类分离到不同的包,这些类使用其他一些共享类。问题是如果我公开共享类,每个人都能看到它们,而不仅仅是我的类。什么是让我们的应用程序只能访问它们的正确方法?
打包MyClass1
包装b MyClass2
打包c public MySharedClass
因为c是公共的,MySharedClass将能够访问它,但问题是它也将对世界可见,我该如何防止它?
答案 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。