Яка ієрархія ClassLoader у Java?

У дизайні делегування завантажувач класу делегує завантаження класу своєму батьківському перед тим, як спробувати завантажити сам клас. Батьківським завантажувачем класу може бути системний завантажувач класу або інший настроюваний завантажувач класу. Якщо завантажувач батьківського класу не може завантажити клас, завантажувач класу намагається завантажити клас сам.

Ієрархія завантажувача класів відповідає за завантаження класів у віртуальну машину Java (JVM).. На вершині ієрархії знаходиться завантажувач класів початкового завантаження, який відповідає за завантаження основних класів Java, таких як java. мовний пакет. Ці класи зазвичай зберігаються в бібліотеці JRE lib/rt.

Порядок завантаження класу Параметри є Класи, завантажені спочатку за допомогою завантажувача батьківського класу, а класи, завантажені за допомогою завантажувача локального класу, спочатку (батьківський завантажувач останнім) . За замовчуванням виконується пошук у завантажувачі батьківського класу перед пошуком у завантажувачі класів програми для завантаження класу.

Ієрархія делегування починається з Application ClassLoader, потім переходить до Platform Class Loader і, нарешті, до Bootstrap ClassLoader. Кожен ClassLoader в ієрархії шукає клас у визначених місцях і за необхідності делегує пошук.

Bootstrap служить батьком для всіх них і відповідає за завантаження внутрішніх класів JDK. З іншого боку, розширення та система завантажують класи з каталогу розширень Java та шляху до класів відповідно.

У Java ієрархія класів є як дерево. Насправді, ієрархія не тільки схожа на дерево, Java надає універсальний суперклас під назвою Object, який визначено як корінь усієї ієрархії класів. Кожен клас, визначений у програмі Java, неявно розширює клас Object.