Различие между загрузчиком класса контекста потока и нормальным classloader

Некоторые забавные вещи:

  1. Наличие PHP и MySQL Application, который работает хорошо с немецким и французским языком, но теперь должен поддерживать русский язык и китайский язык. Я думаю, что перемещаю это в .net, поскольку поддержка Unicode PHP - по-моему - не действительно хороша. Несомненно, переставление с utf8_de/encode или mbstring-функциями является забавой. Почти как забава как наличие Freddy KrГјger посещают Вас ночью...

  2. Понимание, что некоторые языки являются НАМНОГО Более подробными, чем другие. Немецкий язык обычно является НАМНОГО более подробным, чем английский язык, и видящий, как немецкая Версия уничтожает Пользовательский интерфейс, потому что слишком мало места было выделено, не была забава. Некоторые продукты получили некоторую известность из-за своих творческих способов работать вокруг этого с "Schw Забвения. Tr.d. Le. En. W." будучи незабываемым:-)

  3. Игра вокруг с форматами даты, woohoo! Да, СУЩЕСТВУЮТ на самом деле люди в мире, которые используют форматы даты, куда день проходит в середине. Sooooo много забавы, пытающейся узнать, что 02.07.2008, как предполагается, означает, просто потому что некоторые пользователи могли бы верить ему, мог быть 2 июля... Но с другой стороны, Вы парни по водоему могут верить тому же о пользователях, которые поместили месяц в середине:-P, особенно потому что на английском языке, 2 июля звуки, намного лучше, чем 2-го июля, что-то, что не обязательно относится к другим языкам (т.е. на немецком языке, Вы никогда не говорили бы Juli 2, но всегда Zweiter Juli). Я использую 07.02.2008, когда это возможно. Ясно, что это означает 7 февраля, и это сортирует правильно, но dd/mm по сравнению с mm/dd может быть действительно хитрой проблемой.

  4. вещь забавы Anoter, Числовые форматы ! 10.000,50 по сравнению с 10 000,50 по сравнению с 10 000,50 по сравнению с 10'000,50... Это - мой самый большой кошмар прямо сейчас, имея необходимость поддерживать относящийся к разным культурам environent, но не имея никакого способа надежно знать, какой числовой формат пользователь будет использовать.

  5. Формальный или Неофициальный. На некотором языке существует два способа обратиться к людям, формальному пути и более неофициальному пути. На английском языке Вы просто говорите "Вас", но на немецком языке необходимо решить между формальным "Sie" и неофициальным "Du", тем же для французского Tu/Vous. Это обычно - безопасная ставка для выбора формального пути, но это легко пропущено.

  6. Календари. В Европе первый день Недели является понедельником, тогда как в США это - воскресенье. Календарные Виджеты хороши. Показ Календаря с воскресеньем слева и в субботу справа европейскому пользователю не так хорош, это путает их.

225
задан Hearen 19 March 2019 в 01:49
поделиться

2 ответа

Каждый класс будет использовать свой собственный загрузчик классов для загрузки других классов. Итак, если ClassA.class ссылается на ClassB.class , тогда ClassB должен находиться в пути к классам загрузчика классов ClassA или его родителей. .

Загрузчик классов контекста потока является текущим загрузчиком классов для текущего потока. Объект может быть создан из класса в ClassLoaderC и затем передан потоку, принадлежащему ClassLoaderD . В этом случае объект должен использовать Thread.currentThread (). GetContextClassLoader () напрямую, если он хочет загрузить ресурсы, которые недоступны в его собственном загрузчике классов.

class , затем ClassB должен находиться в пути к классам загрузчика классов ClassA или его родителей.

Загрузчик классов контекста потока является текущим загрузчиком классов для текущего потока. Объект может быть создан из класса в ClassLoaderC и затем передан потоку, принадлежащему ClassLoaderD . В этом случае объект должен использовать Thread.currentThread (). GetContextClassLoader () напрямую, если он хочет загрузить ресурсы, которые недоступны в его собственном загрузчике классов.

class , затем ClassB должен находиться в пути к классам загрузчика классов ClassA или его родителей.

Загрузчик классов контекста потока является текущим загрузчиком классов для текущего потока. Объект может быть создан из класса в ClassLoaderC и затем передан потоку, принадлежащему ClassLoaderD . В этом случае объект должен использовать Thread.currentThread (). GetContextClassLoader () напрямую, если он хочет загрузить ресурсы, которые недоступны в его собственном загрузчике классов.

Объект может быть создан из класса в ClassLoaderC и затем передан потоку, принадлежащему ClassLoaderD . В этом случае объект должен использовать Thread.currentThread (). GetContextClassLoader () напрямую, если он хочет загрузить ресурсы, которые недоступны в его собственном загрузчике классов.

Объект может быть создан из класса в ClassLoaderC и затем передан потоку, принадлежащему ClassLoaderD . В этом случае объект должен использовать Thread.currentThread (). GetContextClassLoader () напрямую, если он хочет загрузить ресурсы, которые недоступны в его собственном загрузчике классов.

141
ответ дан 23 November 2019 в 03:55
поделиться

На javaworld.com есть статья, объясняющая разницу => Какой загрузчик классов следует использовать

(1)

Загрузчики классов контекста потока предоставляют черный ход вокруг класса Схема делегирования.

Возьмем, к примеру, JNDI: его внутренности реализуется классами начальной загрузки в rt.jar (начиная с J2SE 1.3), но эти основные классы JNDI могут загружать JNDI провайдеры реализованы независимыми поставщиков и потенциально развернуты в -classpath приложения. Эта сценарий требует родителя загрузчик классов (изначальный в в этом случае), чтобы загрузить класс, видимый для один из его дочерних загрузчиков классов ( системный, например). Нормальный J2SE делегирование не работает, и обходной путь - сделать основной JNDI классы используют загрузчики контекста потока, таким образом эффективно "туннелирование" через иерархия загрузчика классов в направление противоположное правильному делегирование.

(2) из ​​того же источника:

Эта путаница, вероятно, останется с Java какое-то время. Возьмите любой J2SE API с динамической загрузкой ресурсов любых добрый и попробуйте угадать, какая загрузка стратегия, которую он использует. Вот пример:

  • JNDI использует контекстные загрузчики классов
  • Class.getResource () и Class.forName () используют текущий загрузчик классов
  • JAXP использует контекстные загрузчики классов (начиная с J2SE 1.4)
  • java.util. ResourceBundle использует текущий загрузчик классов вызывающей стороны
  • . Обработчики протокола URL, указанные с помощью системного свойства java.protocol.handler.pkgs, ищутся только в загрузчике и загрузчиках системных классов
  • API сериализации Java по умолчанию использует текущий загрузчик классов вызывающей стороны
86
ответ дан 23 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: