powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ClassLoaders...
10 сообщений из 10, страница 1 из 1
ClassLoaders...
    #39439646
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая иерархия класслоадеров:
ClassLoader1 -> BaseClassLoader
ClassLoader2 -> BaseClassLoader

В класслоадере ClassLoader1 есть класс CL (в jarнике который доступен только этому класслоадеру)
И в класслоадере ClassLoader2 есть класс CL (в jarнике который доступен только этому класслоадеру)
Т.е. названия одинаковые.
Мы под ClassLoader1 вставляем в мапу например sharedMap.put("X", new CL())
Вопрос, что будет когда мы сделаем под ClassLoader2 CL cl = sharedMap.get("X") ?
ClassCastException?
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439665
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892ClassCastException?
Да.
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439672
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если допустим сделаем CL extends SharedBaseClass, SharedBaseClass доступен в BaseClassLoader, то что будет если:
Под ClassLoader1 кладем sharedMap.put("XXX", new CL());
Под ClassLoader2 вытаскиваем SharedBaseClass sbc = sharedMap.get("XXX");
?
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439678
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892,

Мне вот эта вот стрелочка в первом сообщении как-то сразу не понравилась. Иерархия класслоадеров не имеет никакого отношения к наследованию. Под иерархией подразумевается делегирование поиска и загрузки родительскому загрузчику ClassLoader.getParent().
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439682
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Да, имел ввиду "-> " == "has parent".

авторМне вот эта вот стрелочка в первом сообщении как-то сразу не понравилась. Иерархия класслоадеров не имеет никакого отношения к наследованию. Под иерархией подразумевается делегирование поиска и загрузки родительскому загрузчику ClassLoader.getParent().
Тоесть класс CL вообще не создастся(Exception) (если он extends BaseSharedClass)? Или как?
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439683
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892,

Какое отношение наследование "extends" имеет к вопросу?
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439684
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczno56892,

Какое отношение наследование "extends" имеет к вопросу?
Ааа, блин. Прошу прощения. Как всегда, не внимательно читаю.
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439685
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Тоесть
авторА если допустим сделаем CL extends SharedBaseClass, SharedBaseClass доступен в BaseClassLoader, то что будет если:
Под ClassLoader1 кладем sharedMap.put("XXX", new CL());
Под ClassLoader2 вытаскиваем SharedBaseClass sbc = sharedMap.get("XXX");
?
Будет тот же ClassCastException?
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439687
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892А если допустим сделаем CL extends SharedBaseClass, SharedBaseClass доступен в BaseClassLoader, то что будет если:
Под ClassLoader1 кладем sharedMap.put("XXX", new CL());
Под ClassLoader2 вытаскиваем SharedBaseClass sbc = sharedMap.get("XXX");
?
Ну, как бы, вроде, ничего не будет. Конфликта нет. Но есть другие сложные ситуации, которые в похожих случаях приводят не к ClassCastException, а к другим ислючениям: LinkageError, AbstractMethodError, и ещё какой-то, ЕМНИП.
...
Рейтинг: 0 / 0
ClassLoaders...
    #39439688
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Под ClassLoader2 вытаскиваем SharedBaseClass sbc = sharedMap.get("XXX");
Будет тот же ClassCastException?
Нет, не будет. У вас ошибочное положение "Под ClassLoader2 вытаскиваем". Нельзя ничего "вытащить" под ClassLoader. ClassLoader ищет, грузит ресурсы и формирует классы. Будет обычный объект класса CL загруженого первым класслоадером.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ClassLoaders...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]