2017-01-09 17 views
2

Мне нужно изменить статические методы внутри сторонних библиотек. Я сделал преобразование метода экземпляра, но не уверен, что то же самое относится к статическим методам.Можно изменить статические методы во время выполнения с помощью java Instrumentation?

У меня есть несколько статических методов, называемых myMethod внутри MyClass.java. Мне нужно изменить реализацию myMethod во время выполнения. В основном, я расширил метод ClassFileTransformer и overrode byte [], как показано ниже. Это работало, например, методами, но я не уверен, могу ли я сделать то же самое для статических методов.

@Override 
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, 
         ProtectionDomain protectionDomain, byte[] classfileBuffer) 
    throws IllegalClassFormatException { 

} 

ответ

0

Да, конечно, это возможно. Вы можете изменить весь файл класса. Для большинства виртуальных машин вы можете изменить реализацию метода, но не его подпись. Если метод статичен или нет, это не имеет значения.

 Смежные вопросы

  • Нет связанных вопросов^_^