Это возможно, просто используя
Java
Простой ответ - решительное «Вы не хотите этого делать!».
Это технически возможно, но не без использования чрезвычайно сложных, дорогих и хрупких приемов, таких как модификация байт-кода 1 . И даже тогда вы должны полагаться на динамическую загрузку для доступа к измененному типу и (возможно) к отражению, чтобы использовать его новые члены. Короче говоря, вы будете причинять себе много боли, а если и не выиграете, тем меньше.
Java является языком статической типизации, и добавление / изменение сигнатур типов классов может нарушить контракт статической типизации класса.
1 - AspectJ и т. П. Позволяют вводить в класс дополнительное поведение, но, вероятно, это не «внедрение во время выполнения», которое вам нужно. Конечно, внедренные методы не будут доступны для вызова статически скомпилированного кода.