Maison  >  Article  >  Java  >  Comment utiliser approuvé en Java pour remplacer les instances de classes fournies par jdk

Comment utiliser approuvé en Java pour remplacer les instances de classes fournies par jdk

黄舟
黄舟original
2017-09-05 10:06:191911parcourir

Cet article vous présente principalement les informations pertinentes sur la façon dont Java utilise les classes fournies par jdk. L'article le présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de chacun. j'en ai besoin Apprenons avec l'éditeur ci-dessous.

Préface

Lorsque nous avons analysé le principe d'analyse de Tomcat catalina.bat auparavant, nous avons constaté qu'il y avait un paramètre -Djava.endorsed.dirs dans le paramètres de démarrage de Tomcat

Comme indiqué ci-dessous :


-Djava.endorsed.dirs

Java fournit une technologie approuvée :

A propos d'endossé : Il peut être simplement compris comme un fichier jar placé dans le répertoire spécifié par -Djava.endorsed.dirs , qui aura pour fonction de couvrir l'API du système. Cependant, les classes pouvant être couvertes sont limitées, ce qui n'inclut pas les classes du package java.lang (pour des raisons de sécurité).

Pourquoi faut-il utiliser endossé pour remplacer les classes dans jdk ?

Parce que Java utilise le mécanisme de délégation parent pour charger les classes. Les classes fournies par jdk ne peuvent être chargées que par le chargeur de classes Bootstrap. Si vous souhaitez remplacer une certaine classe dans jdk dans votre application, il est impossible de le faire, donc Java fournit une approbation pour atteindre la classe que vous souhaitez remplacer dans le système.

Exemple

Modifiez la méthode java.util.ArrayList dans la classe get(int index) et ajoutez les informations sur la valeur de sortie obtenues dans la méthode, si la La chaîne est affichée directement, sinon, les informations de classe sont affichées et le chargeur de classe de la classe d'élément est chargé. Le code est le suivant :


Ensuite, emballez le fichier jar et placez-le dans un répertoire.

Je l'ai mis ici dans le répertoire "D:endorsed"

classe de test


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);
  }
 }
}

à exécuter Quand en ajoutant le paramètre -Djava.endorsed.dirs=D:endorsed . Comme indiqué ci-dessous :


Résultats en cours

À partir des résultats, nous avons constaté que les informations imprimées ne sont pas notre programme Ce qui est sorti est ce qui est imprimé dans la méthode ArrayList.get().

approuvé Une autre méthode de modification

Selon la description officielle du document : Si vous ne souhaitez pas ajouter le paramètre -D, si nous voulons le baser sur ce JDK. Si tous sont modifiés uniformément, alors nous pouvons mettre nos pots modifiés dans :


$JAVA_HOME/jre/lib/endorsed

De cette façon, toutes les ArrayLists basées sur ce JDK ont changé ! ! !

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn