“matrioska”包中的类之间的可见性

时间:2011-12-03 22:56:12

标签: java package visibility

我在A包中有a个类。

我在B包中有a.b课程后。 B包含方法m()

我想在内部调用m() ,仅在A内调用。确切地说,我不想将m()设置为public

有可能吗?

对不起标题。我没有找到更好的东西。

编辑以澄清:AB类必须由开发人员使用(他们构成API)并在A内部我有一个私有方法来计算修改B对象,但开发人员无法调用此对象。 aa.b个套餐除了相应的文件夹是一个在另一个内部之外还有其他关系吗?

Edit2:类A包含List<B>A是必须与服务器通信的类,它使用值进行响应。 A必须在列表中的每个元素中插入此值。

3 个答案:

答案 0 :(得分:1)

除非A子类B(我不会仅仅为了继承而这样做),AB之间基本上没有“特殊”关系,所以没办法这样做,我很害怕。

你到底需要保护什么?是不是不相信自己或同事不在合适的时间调用方法,或者更强大的东西?您可以在执行时检查堆栈,尽管这在内联等方面很危险,可能会弄乱 - 而只会在执行时

答案 1 :(得分:0)

有一种方法可以使用反射和一点点黑客来做到这一点,但这样做会非常糟糕。 我可以建议阅读更多有关访问级别的内容

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

 Access Levels
 Modifier   Class   Package  Subclass World  
 public      Y      Y         Y        Y
 protected   Y      Y         Y        N
 no modifier Y      Y         N        N
 private     Y      N         N        N

答案 2 :(得分:-1)

使m受保护并使A扩展B.这对您的模型有用吗?