Когда задействуются загрузчики классов Java?

Существует 10 миллионов статей и документов о , что такое загрузчики классов Java, и , как / *, почему *писать свои собственные... но все они, кажется, предполагают некоторые вещи, на которые я не могу найти простой ответ!

Я понимаю работу загрузчика классов :по чтению байт-кода и созданию из него объекта. Различные загрузчики классов делают это по-разному и т. д.

Но поскольку мне никогда не приходилось кодировать API-интерфейс загрузчика классов в моем собственном коде и никогда не приходилось писать свой собственный, мне очень трудно понять , когда собственный код ClassLoaderдействительно срабатывает.

Например:

public static void main(String[] args) {
    Fizz fizz = new Fizz();
    fuzz.buzz();
}

Здесь у нас есть объект Fizz. Прежде чем Fizzможет быть создан экземпляр,нам нужен загрузчик классов, чтобы запустить и загрузить Fizz.classв свой кеш. Где и когда это происходит?!?! Этого явно нет в моем коде, поэтому оно должно быть неявно где-то в JRE...?

Касательно этого вопроса, если я напишу свой собственный загрузчик классов, скажем, WidgetClassLoaderи хочу настроить его для загрузки либо всех классов моего приложения, либо, возможно, только моего Fizz.class, как мне «привязать» этот WidgetClassLoaderк моему приложение, чтобы оно знало, какой загрузчик классов использовать? Должен ли мой код явно вызывать этот загрузчик классов или он будет неявным, как в первом примере? Заранее спасибо!

17
задан IAmYourFaja 18 July 2012 в 15:37
поделиться