После прочтения о динамической загрузке классов (то есть загрузке файла .class с диска) я немного волнуюсь.
Допустим, у меня есть файл с именем MyClass.class
, который содержит класс a.b.c.MyClass
.
Предполагая, что теперь я решил переместить файл в C:\
(моя корневая папка в Windows), я бы хотел динамически загрузить этот класс. Это вообще возможно? Из того, что я понял, кажется, что путь MyClass
всегда должен иметь форму *a/b/c.MyClass
.
Таким образом, следующий фрагмент кода не работает:
URL[] urls = new URL[] { new File("C:\\").toURL() };
URLClassLoader classLoader = new URLClassLoader(urls);
Class<?> targetClass = classLoader.loadClass("a.b.c.MyClass");
Заставлять нас помещать файл .class
в структуру каталогов, которая отражает его полное внутреннее имя, безумие, IMO. Я что-то упустил?
Возможное следствие этого факта заключается в том, что если я решу скопировать пару файлов .class
во временный каталог, чтобы я мог выполнить над ними какое-то удивительное волшебство, мне придется реплицировать все их грязные пути в этом тот же временный каталог, что в лучшем случае неудобно.