我有一个来自第三方依赖项的交互客户端,我需要使用的服务。一些行为不适合我的用例,我想尝试扩展或只是为它重写一个适配器,但我需要的许多方法或变量都受到保护。我应该只写一个属于该包的类来访问它们吗?我没有听说过明确声明不,但它似乎首先打败了包的目的。
答案 0 :(得分:6)
我会说这是一个非常糟糕的主意。你永远不应该以任何方式修改第三方JAR。你最好考虑把它们密封起来。
原因有两方面:
您可以自由扩展第三方课程,只要它没有标记为final
。但如果您这样做,它将成为您的代码的一部分。您可以随时提供该第三方JAR的新版本。
答案 1 :(得分:0)
如果方法和变量受到保护,您可以使用自己的实现扩展该类。子类能够访问父类的受保护变量和属性。
您的实施不需要在同一个包中。