Предположим у меня есть .class файл класса с таким именем com.example1.FooFoo.
Теперь я хочу чтобы этот файл загрузился как класс com.example1.Bar.
Другими словами написать такой ClassLoader, который:
1. Получил запрос от приложения на загрузку класса com.example1.Bar.
2. Какими-то не имеющим сейчас значение способом определил, что нужно загрузить код из файла com/example1/FooFoo.class.
3. Загрузил byte-код из файла com/example1/FooFoo.class (который компилировался как класс FooFoo)
4. Заменил в byte-коде имя класса FooFoo на Bar
5. Вызвал defineClass