Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / ClassLoaders... / 10 сообщений из 10, страница 1 из 1
17.04.2017, 13:38
    #39439646
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ClassLoaders...
Есть такая иерархия класслоадеров:
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
17.04.2017, 14:01
    #39439665
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ClassLoaders...
no56892ClassCastException?
Да.
...
Рейтинг: 0 / 0
17.04.2017, 14:14
    #39439672
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ClassLoaders...
А если допустим сделаем CL extends SharedBaseClass, SharedBaseClass доступен в BaseClassLoader, то что будет если:
Под ClassLoader1 кладем sharedMap.put("XXX", new CL());
Под ClassLoader2 вытаскиваем SharedBaseClass sbc = sharedMap.get("XXX");
?
...
Рейтинг: 0 / 0
17.04.2017, 14:25
    #39439678
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ClassLoaders...
no56892,

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

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

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

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


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