Mit Ausnahme des Bootstrap-Klassenladers werden alle Klassenlader von einer übergeordneten Klasse abgeleitet. Im Wesentlichen ist das genau die Klassenlader-Instanz, die wiederum den betreffenden Klassenlader geladen hat. Das Wichtigste dabei ist, diesen sogenannten Parent-Klassenlader korrekt festzulegen. Danach kann man die Methode getParent() des Klassenladers verwenden, um Anfragen nach Klassen an ihn weiterzuleiten. Das empfiehlt sich beispielsweise, wenn der eigene Klassenlader mit den spezifizierten Methoden eine Klasse nicht finden kann. Den Parent-Klassenlader muss man im Konstruktor als Parameter für den java.lang.ClassLoader-Konstruktor angeben:
Die Methode loadClass(String name) bildet den Einstiegspunkt für den Klassenlader. Der Parameter name ist dabei ein vollständig qualifizierter Klassenname (FQCN), also ein Klassenname samt Paketangabe. Ist der Parent-Klassenlader korrekt angegeben, wird er zuerst gefragt, wenn MyClassLoader eine Klasse per loadClass(String name) laden soll, diese aber nicht findet.
Falls der übergeordnete Klassenlader die Klasse auch nicht finden kann, wird die Methode findClass(String name) aufgerufen. Die Standardimplementierung von findClass(String name) löst normalerweise den Ausnahmefehler ClassNotFoundException aus. Die meisten Entwickler dürften mit diesem schon hinreichend Bekanntschaft gemacht haben. Entwickler von eigenen Klassenladern sollten diese Methode aufheben, wenn sie java.lang.ClassLoader übernehmen.
Zweck der Methode findClass() ist es, allen speziellen Code für MyClassLoader aufzunehmen, ohne sonstigen Code zu duplizieren, etwa beim Aufruf des System-Klassenladers, wenn der eigene Klassenlader nicht funktioniert. Bei dieser Methode muss der Klassenlader den Bytecode von einer beliebigen Quelle abrufen können. Sobald der Bytecode abgerufen ist, sollte die Methode defineClass() aufgerufen werden. Es ist extrem wichtig, welche Klassenlader-Instanz die Methode für die geladene Klasse aufgerufen hat. Wenn also zwei Klassenlader-Instanzen Bytecode aus derselben Quelle oder unterschiedlichen Quellen definieren, werden die definierten Klassen als unterschiedlich behandelt.
Mit dem Internet verbundene Digitale Bilderrahmen oder Mediaplayer können mit Schadsoftware infiziert werden und sind…
Schädliche Apps können unter Umständen einen Systemabsturz auslösen. Mindestens eine Anfälligkeit erlaubt eine Remotecodeausführung.
Sein Anteil an allen Infektionen steigt in Deutschland auf 18,5 Prozent. Das Botnet Androxgh0st integriert…
Betroffen sind Chrome 131 und früher für Windows, macOS und Linux. Angreifer können unter Umständen…
Marktforscher Lündendonk erwartet für das Jahr 2025 ein durchschnittliches Umsatzwachstum von 14,9 Prozent.
Alarmierender Anstieg von Open-Source-Malware / Seit 2019 haben Sonatype-Analysen mehr als 778.500 bösartige Pakete aufgedeckt