我想利用包私有的构造函数,以防止从外部实例化某个对象。唯一能够实例化该类的是工厂类,它位于同一包中。

我担心的是,如果我的应用程序得到了编译和密封,那么唯一有可能提供具有包私有范围的新类的唯一方法是可以由同一工厂访问(或者为什么不使用工厂的新实现)?是模仿引用我密封的lib的项目中程序包的完全相同的路径。

尽管这绝非不可能,但我只是想知道是否应将其视为一种良好做法。您如何看待这种意义上的包私有范围?

最佳答案

它应该以这种方式工作。我也没有其他方法可以实现这一目标。

但是,恕我直言,这样做通常不是很有建设性的。在某些情况下可能会禁止其他用途,但一般而言,我认为您应该尝试建立工厂,因为它的易用性并以此说服人们。
如果您的工厂不可扩展,那么人们最终可能会在“您的”程序包中创建类,只是想按自己的意愿访问您的类。

07-24 19:29