Все слышали про проблему синглетонов, когда кастомный лоадер может загрузить инстас того же класса.
К примеру, так
public static void main(String[] args) throws ClassNotFoundException,
MalformedURLException, InstantiationException,
IllegalAccessException {
Main loader1 = new Main(new URL[] { new URL(
"file:///C:/Users/Nastya/Desktop/") });
Main loader2 = new Main(new URL[] { new URL(
"file:///C:/Users/Nastya/Desktop/") });
Class loadedClass1 = loader1.loadClass("LoadedClass", true);
Class loadedClass2 = loader2.loadClass("LoadedClass", true);
}
LoadedClass.class нету в класспасе системного лоадера, получается у нас есть два класса из удаленного источника.
Теперь, в коде я не могу использовать LoadedClass, т.к. будет ошибка компиляции: его нету в класспасе.
Если я сделаю loadedClass1.newInstance() и loadedClass2.newInstance() и те в свою очередь создадут синглетоны, то какая проблема тут с синглетонами вообще, если классы друг на друга не ссылаются, т.е. не видят и LoadedClass всегда будет ссылаться на текущий загрузчик? т.е. я понимаю что таким образом можно реализовать раздельную функциональность и поэтому не нужен совместный синглетон. Или в чем проблема?