Встречается на собеседованиях • сегодня
Как подменить один класс другим
В Java можно подменить класс на этапе загрузки с помощью кастомного ClassLoader, либо во время выполнения через инструментацию байткода (например, с помощью библиотеки Byte Buddy или ASM).
Пример подмены через ClassLoader:
java
class CustomClassLoader extends ClassLoader {
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
if (name.equals("com.example.Original")) {
byte[] bytes = loadModifiedClassBytes();
return defineClass(name, bytes, 0, bytes.length);
}
return super.findClass(name);
}
}Для подмены в runtime можно использовать Java Agent и трансформацию классов:
java
public static void premain(String args, Instrumentation inst) {
inst.addTransformer((loader, className, classBeingRedefined,
protectionDomain, classfileBuffer) -> {
if (className.equals("com/example/Original")) {
return modifyClass(classfileBuffer);
}
return null;
});
}Важно: подмена классов может нарушить безопасность и требует осторожности.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы