我想在类A中创建一个私有接口,并由类B实现它。我的目的是让类A能够调用一个其他人无法调用的类B上的方法集。它们位于不同的包中的不同文件中。有谁有什么想法吗?
发布于 2014-07-11 04:42:59
您可以实现的最佳效果是提供接口包级可见性,并将A类和B类移动到同一个包中。
这并不能阻止将来有人将另一个类添加到同一个包中,从而使其能够访问该接口。
发布于 2014-07-11 04:53:40
简单的答案就是重新设计你的类结构。
但是如果你真的需要,考虑使用java中的reflex特性。您可以注入该方法,但不推荐这样做。
发布于 2014-07-11 05:15:33
免责声明:不是Java程序员。
但是,如果您想利用类型系统来获取编译时错误...通过引入一种新的数据类型作为一种“访问令牌”或“伪参数”,通常会有一些技巧。使得获取该类型的值变得困难,但需要该类型的值作为接口中的参数。
然而,引入这样一个环最终就像重命名你的方法一样做作,像DoFooActionOnClassB_ButDontCallUnlessYouAreClassA这样令人担忧的东西。我想人们通常会发现,在一个好的设计中,这个“虚拟类型”根本不是一个虚拟类型……而是对你一开始就应该有的上下文和状态的捕捉。
https://stackoverflow.com/questions/24685325
复制相似问题