Есть ли способ переопределить классы библиотеки в приложении 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;

использовать вашу реализацию вместо стандартной.

Другие вопросы по тегам