вы можете попробовать расширить класс, который содержит статический код, а затем вставить свой собственный статический инициализатор. Не совсем уверен, что это работает, но:
public class OldBadLibraryClass {
static {
System.out.println("oldBadLibrary static init");
}
}
//next file
public class MyBetterClass extends OldBadLibraryClass {
static {
System.out.println("MyBetterClass init");
}
}
public class Test {
public static void main(String[] args) {
new MyBetterClass();
}
}
Посмотрите, печатает ли вышеприведенное изображение в том порядке, в котором вы ожидаете. На моей машине это сработало.
Хотя это совершенно взломанный и довольно хрупкий. Было бы гораздо лучше изменить старый класс, чтобы иметь метод init (), который можно переопределить.