Heim > Java > javaLernprogramm > So verwenden Sie „Empfohlen in Java', um Instanzen von Klassen zu überschreiben, die von JDK bereitgestellt werden

So verwenden Sie „Empfohlen in Java', um Instanzen von Klassen zu überschreiben, die von JDK bereitgestellt werden

黄舟
Freigeben: 2017-09-05 10:06:19
Original
1983 Leute haben es durchsucht

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen darüber vor, wie Java die von jdk bereitgestellten Klassen abdeckt. Der Artikel stellt ihn ausführlich anhand von Beispielcodes vor. Er hat einen gewissen Referenzlernwert für alle, die lernen oder arbeiten Brauchen Sie es? Lassen Sie uns gemeinsam mit dem Herausgeber unten lernen.

Vorwort

Als wir zuvor die Prinzipanalyse von Tomcat catalina.bat analysierten, stellten wir fest, dass es einen -Djava.endorsed.dirs-Parameter im gibt Parameter zum Starten von Tomcat

Wie unten gezeigt:


-Djava.endorsed.dirs

Java bietet empfohlene Technologie:

Über empfohlen: Es kann einfach als eine JAR-Datei verstanden werden, die in dem durch -Djava.endorsed.dirs angegebenen Verzeichnis abgelegt wird und die Funktion hat der Abdeckung der System-API. Allerdings gibt es Einschränkungen hinsichtlich der abdeckbaren Klassen, die (aus Sicherheitsgründen) keine Klassen im java.lang-Paket enthalten.

Warum muss „endorsed“ verwendet werden, um Klassen in JDK zu ersetzen?

Weil Java den übergeordneten Delegationsmechanismus zum Laden von Klassen verwendet. Die von jdk bereitgestellten Klassen können nur vom Klassenlader Bootstrap geladen werden. Wenn Sie in Ihrer Anwendung eine bestimmte Klasse in JDK ersetzen möchten, ist dies nicht möglich. Daher bietet Java die Möglichkeit, die Klasse zu erreichen, die Sie im System ersetzen möchten.

Beispiel

Ändern Sie die Methode java.util.ArrayList in der Klasse get(int index) und fügen Sie die in der Methode erhaltenen Ausgabewertinformationen hinzu, wenn The Die Zeichenfolge wird direkt ausgegeben. Wenn nicht, werden die Klasseninformationen ausgegeben und der Klassenlader der Elementklasse geladen. Der Code lautet wie folgt:


Packen Sie dann die JAR-Datei und legen Sie sie in einem Verzeichnis ab.

Ich habe es hier im Verzeichnis „D:endorsed“ abgelegt

Testklasse


public class Bootstrap {
 public static void main(String[] args) {
  ArrayList<String> list = new ArrayList<String>(10);
  for(int i=0;i<10; i++){
   list.add("test"+i);
   list.get(i);
  }
 }
}
Nach dem Login kopieren

um es auszuführen, wann Hinzufügen des Parameters -Djava.endorsed.dirs=D:endorsed . Wie unten gezeigt:


Laufergebnisse

Anhand der Ergebnisse haben wir festgestellt, dass die gedruckten Informationen nicht der Fall sind Unser Programm Was ausgegeben wird, ist das, was in der Methode ArrayList.get() gedruckt wird.

empfohlen Eine andere Änderungsmethode

Laut der offiziellen Dokumentbeschreibung: Wenn Sie den Parameter -D nicht hinzufügen möchten, wenn wir Ich möchte es auf diesem JDK basieren. Wenn alle einheitlich geändert werden, können wir unsere geänderten Gläser in Folgendes einfügen:


$JAVA_HOME/jre/lib/endorsed
Nach dem Login kopieren

Auf diese Weise basieren alle ArrayLists an diesem JDK haben sich geändert! ! !

Zusammenfassung

Das obige ist der detaillierte Inhalt vonSo verwenden Sie „Empfohlen in Java', um Instanzen von Klassen zu überschreiben, die von JDK bereitgestellt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage