有没有办法在Java应用程序中覆盖库类

时间:2017-10-29 22:57:41

标签: java class rt.jar

我正在使用Eclipse和Netbeans,现在更喜欢Netbeans。如果开发java库中的系统类(例如FileReader)有没有办法将该类添加到应用程序中并让本地类取代库副本?

我们的想法是能够在使用普通jdk的同时一次扩充特定的类。

具体来说,我正在使用java.lang.StringBuilder和java.io.FileWriter。

我写了一个修改过的StringBuilder类。如果我在我的目录中创建它: 的java /郎/ FastStringBuilder

javac抱怨我正在尝试编译受限制的包java.lang。

如果我重命名该包,则它不能从不公开的AbstractStringBuilder继承。

他们正在以这种方式变得更加困难。

2 个答案:

答案 0 :(得分:4)

在Java中真的是非常糟糕的主意。

您需要自己的FileReader吗? - 将它放入包装中并使用它。

您是否需要使用标准FileReader中的方法? - 将其扩展或包装在您自己的FileReader中并使用它。

但永远不要尝试从任何库替换任何类,无论它们在哪里 - 在JDK或其他第三方框架中。

对于非常罕见和更糟糕的情况,你可以使用AOP,但它真的很痛苦,也是另一个更好的坏主意"。

答案 1 :(得分:1)

而不是

import java.io.FileReader;

你只需要

import package.of.your.FileReader;

使用您的实现而不是标准实现。