Есть ли способ переопределить классы библиотеки в приложении Java
Я использую Eclipse и Netbeans, теперь предпочитаю Netbeans. Если вы разрабатываете системный класс, который находится в библиотеке java (например, FileReader), есть ли способ добавить этот класс в приложение и сделать так, чтобы локальный класс заменял копию библиотеки?
Идея состоит в том, чтобы иметь возможность работать над дополнением определенного класса одновременно, все еще используя обычный jdk.
В частности, я работаю с java.lang.StringBuilder и java.io.FileWriter.
Я написал модифицированный класс StringBuilder. Если я создам его в моем каталоге: java / lang / FastStringBuilder
javac жалуется, что я пытаюсь скомпилировать ограниченный пакет java.lang.
Если я переименую пакет, он не сможет наследовать от AbstractStringBuilder, который не является публичным.
Они делают этот путь сложнее, чем нужно.
2 ответа
Это действительно очень плохая идея в Java.
Вам нужен собственный FileReader? - сделать это в вашей упаковке и использовать его.
Вам нужно использовать методы из стандартного FileReader? - расширить или обернуть его в свой собственный FileReader и использовать его.
Но никогда не пытайтесь заменить какие-либо классы из каких-либо библиотек, независимо от того, где они находятся - в JDK или других сторонних средах.
Для очень редких и худших случаев вы можете использовать АОП, но это действительно больно, а также еще одна "лучшая плохая идея".
Вместо
import java.io.FileReader;
тебе просто нужно
import package.of.your.FileReader;
использовать вашу реализацию вместо стандартной.