【发布时间】:2018-04-10 21:26:50
【问题描述】:
我正在使用 Eclipse 和 Netbeans,现在更喜欢 Netbeans。如果开发 Java 库中的系统类(例如 FileReader),有没有办法将该类添加到应用程序中并让本地类取代库副本?
我们的想法是能够在仍然使用普通 jdk 的同时一次扩充特定的类。
具体来说,我正在使用 java.lang.StringBuilder 和 java.io.FileWriter。
我写了一个修改过的 StringBuilder 类。如果我在我的目录中创建它: java/lang/FastStringBuilder
javac 抱怨我正在尝试编译受限包 java.lang。
如果我重命名包,那么它不能从非公开的 AbstractStringBuilder 继承。
他们让这种方式变得比需要的更难。
【问题讨论】:
-
在不同的包中使用相同的名称!
-
但是你的意思是
use your class that has the same name还是你想提供你自己的实现例如java.io.Filereader?在第二种情况下,它是类路径工作。 -
我能想到的更接近的是
/lib/ext(docs.oracle.com/javase/tutorial/ext/basics/install.html)。不过不确定它会起作用。 -
对于您自己可能的应用程序:将您的 java.io.File 类首先放在类路径上。使用 java 9 会有问题,所以这可能不是一个好主意。正如您所说的实现类:一个新的 FileReader 只是一个可插入的 Reader,您自己的包并不是真正的问题。也许是 AOP?
-
无论您出于何种原因想要这个,我保证有更好的方法来实现您的目标。