如何编辑Java Platform Package(内置API)源代码?

时间:2012-06-18 10:51:42

标签: java

与Java API一样好,我需要为我正在处理的项目更改默认API包中的某些类的代码(例如java.util.Scanner)。

理想情况下,我会扩展我感兴趣的类并创建自己的子类,但我想要扩展的类被声明为#final;#39;。你怎么建议我这样做?如果我自定义这些软件包的源代码,我是否会遇到编译器问题?

4 个答案:

答案 0 :(得分:4)

如果可以的话,你应该按照另一个答案中的建议进行换行和委托。请参阅Adapter Pattern

但是如果真的需要它,当然有办法做到这一点。

一种简单的方法是简单地修改下载源中的代码,并在类路径中替换您自己的jar版本。

另一个选择是使用面向方面的编程技术,可能需要AspectJ来根据需要拦截和修改调用。

也许有可能使用反射和本土类加载器来破解解决方案,但编码会很痛苦。

如果您不知道自己在做什么,所有这些都是非常危险的。经常上课是有充分理由的。

如果您更具体地告诉我们您希望改变的是什么,我们可能会提供帮助以避免您目前认为您需要的内容。

答案 1 :(得分:1)

你真的无法延长最后一堂课..

如果您真的想通过扩展类来添加功能,可以通过修改类src来实现。从JDK中保存并使用它。

答案 2 :(得分:-1)

不要那样做。编写自己的代码,包裹原始扫描仪并使用它。要更新内部包,可以在运行时提供endorsed目录属性。

答案 3 :(得分:-1)

永远不要这样做!永远不要改变核心类。如果class是final - 使用组合而不是继承。

相关问题