Я пытаюсь переопределить классы в пакете java.lang, например String.class или Integer.class, используя ByteBuddy, но безуспешно. Мой вопрос в том, возможно ли это вообще?
Это код, который я пытаюсь использовать в своем java-агенте:
public static void premain(String agentArgs, Instrumentation inst) {
new AgentBuilder.Default()
.type(named("java.lang.String"))
.transform((builder, typeDescription, classLoader) ->
builder.method(named("toString"))
.intercept(FixedValue.value("toString() got hacked!")))
.with(AgentBuilder.Listener.StreamWriting.toSystemOut())
.with(AgentBuilder.RedefinitionStrategy.REDEFINITION)
.with(AgentBuilder.TypeStrategy.Default.REDEFINE)
.installOn(inst);
}
Когда я проверяю вывод журналов и то, что я вижу в отношении класса String, это:
[Byte Buddy] IGNORE [[Ljava.lang.String; [null, null]
[Byte Buddy] COMPLETE [[Ljava.lang.String; [null, null]
Означает ли это, что ByteBuddy не переопределяет класс String? Это вообще возможно?
Большое спасибо.