Можно ли заменить реализацию метода библиотеки зависимостей в Java? - PullRequest
0 голосов
/ 15 декабря 2018

У нас есть ситуация, когда мы используем какую-то библиотеку, и мы хотели бы настроить логику крошечного частного метода, используемого в библиотеке.К сожалению, библиотека плохо написана для расширения.

Итак, представьте себе, если у нас есть библиотека с классом ClassA, подобная этой:

public class ClassA {

    public String buildMessage(){
        return "Hello, "+ buildSuffixString();
    }

    private String buildSuffixString(){
        return "World!";
    }
}

Класс ClassA используется в библиотеке классом ClassB.ClassB используется в библиотеке ClassC и так далее.ClassB создает свою зависимость в конструкторе с кодом, подобным classA = new ClassA();(К сожалению).ClassC создает свою зависимость в конструкторе с кодом, подобным classB = new ClassB() ;.И так далее.

Мы хотели бы заставить всех, кто использует метод buildMessage() из ClassA, получить Hello, Kitty! сообщение вместо Hello, World! (т.е. нам нужно заменить реализацию закрытого метода buildSuffixString() нанаша собственная реализация).Есть ли способ изменить логику частного метода с помощью рефлексии или компилятора Java или чего-то еще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...