在软件开发中,我们都在使用软件提供商提供的库。在A类中考虑有四个函数,即x,y,z。我只是希望我的开发团队避免使用x函数。因此,我找到了一个想法,而不是告诉他们不要使用。继承类并覆盖所有函数,对于函数x,抛出一个不支持的方法异常,其余的我调用超级方法。我也发现了一个问题,开发人员可以直接使用基类A,如何避免直接使用A类。我在OSGi中发现了类似的功能,可以引入lib包然后不导出等等。有没有办法实现这个是java?
答案 0 :(得分:2)
我认为由于这些原因存在代码审查。考虑一下你无法编辑第三方来源的情况,你会怎么做?就像Siddharth所说的那样,将它分类并抛出一个有意义的异常并以明确的理由记录它。如果有人在那之后使用基类,大多数情况下可能不是出于无知,但可能是出于好奇。这种事情可以被个人和学习所欣赏,但是为了项目,开发人员必须遵循这些准则。
答案 1 :(得分:1)
我认为只是告诉开发人员该做什么比复杂的软件解决方案更受欢迎。有时简单的事情会更好。
但是,如果您坚持沿着这条道路前进,那么如果您是Spring用户,则可以使用方面来强制执行架构标准。使用一个方面编织有问题的方法,如果它们被调用则抛出异常。
答案 2 :(得分:0)
您可以在十六进制编辑器中编辑库类文件,并将其访问修饰符从public修改为package private。您也可以重命名它,然后使用继承来包装此类。 Here您可以找到类文件规范。一旦我尝试了这种技术,用包装类替换jdbc驱动程序类,提供一些额外的日志记录和其他有用的技巧。
答案 3 :(得分:0)
有许多工具可以检查源代码是否符合某些规则,例如格式化,死代码,变量的命名约定等。适用于Java的流行代码包括Maven Enforcer plugin,checkstyle和PMD
这些可能允许您编写禁止某些方法调用的规则。然后你可以在编译时自动检查。据我所知,遗憾的是,上述工具都没有支持非法方法调用"盒子外面;但是,至少对PMD来说,编写新支票非常简单。