{"id":917,"date":"2018-09-17T18:23:52","date_gmt":"2018-09-17T09:23:52","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=917"},"modified":"2018-12-23T02:02:31","modified_gmt":"2018-12-22T17:02:31","slug":"reflect-util","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/fr\/blog\/java\/refleter-lutilite","title":{"rendered":"La r\u00e9flexion Java simplifi\u00e9e"},"content":{"rendered":"<h2 class=\"common_title\">La r\u00e9flexion Java simplifi\u00e9e<\/h2>\n<p>\n<strong>Java<\/strong>de<strong>r\u00e9flexion<\/strong>Pr\u00e9sentation d&#039;une classe utilitaire qui vous permet d&#039;utiliser facilement l&#039;API.\n<\/p>\n<h2 class=\"common_title\"><a name=\"1\">Qu&#039;est-ce que la r\u00e9flexion ?<\/a><\/h2>\n<p>\n<strong>API de r\u00e9flexion<\/strong>dents,&quot;<strong>java.lang.reflect<\/strong>\u00bb inclus dans le forfait,<br \/>\nIl s&#039;agit d&#039;une API qui r\u00e9cup\u00e8re des informations telles que les champs et les m\u00e9thodes des classes Java.<br \/>\nLes classes suivantes sont principalement utilis\u00e9es.\n<\/p>\n<ul>\n<li><strong>java.lang.Class<\/strong><\/li>\n<li><strong>java.lang.reflect.Constructeur<\/strong><\/li>\n<li><strong>java.lang.reflect.M\u00e9thode<\/strong><\/li>\n<li><strong>java.lang.reflect.Field<\/strong><\/li>\n<\/ul>\n<p>\n<strong>r\u00e9flexion<\/strong>En utilisant , vous pouvez cr\u00e9er des classes ou appeler des m\u00e9thodes sans avoir \u00e0 les coder directement.<br \/>\nVous pouvez cr\u00e9er une instance de classe \u00e0 partir d&#039;une cha\u00eene ou ex\u00e9cuter une m\u00e9thode.<\/p>\n<p>En \u00e9crivant les d\u00e9finitions des noms de classe et des noms de m\u00e9thodes dans des fichiers externes tels que XML, vous pouvez adapter dynamiquement l&#039;application aux changements de l&#039;environnement pendant l&#039;ex\u00e9cution.<br \/>\nC&#039;est \u00e9galement une API tr\u00e8s efficace pour cr\u00e9er des applications tr\u00e8s flexibles.\n<\/p>\n<p><script type=\"text\/javascript\" src=\"https:\/\/chat-messenger.com\/js\/common.js?dd12sssas2223\" charset=\"UTF-8\"><\/script><br \/>\n<script type=\"text\/javascript\"> writePR(); <\/script><\/p>\n<h2 class=\"common_title\"><a name=\"2\">Objectif de la r\u00e9flexion<\/a><\/h2>\n<p>\n<strong>r\u00e9flexion<\/strong>n&#039;est pas souvent utilis\u00e9 directement par les utilisateurs,<br \/>\nIl est largement utilis\u00e9 dans les applications Web telles que Struts et les frameworks tels que le mappage O\/R.<br \/>\n<br \/>\nPar exemple, lors de la d\u00e9finition automatique des donn\u00e9es d&#039;entr\u00e9e de l&#039;\u00e9cran Web sur les propri\u00e9t\u00e9s JavaBeans,<br \/>\nIl est utilis\u00e9 lors de l&#039;\u00e9mission de SQL qui se met automatiquement \u00e0 jour en fonction des propri\u00e9t\u00e9s JavaBeans.<\/p>\n<p>De plus, des fonctions telles que le chargement et l&#039;enregistrement dynamiques de plug-ins qui \u00e9tendent les fonctionnalit\u00e9s au d\u00e9marrage de l&#039;application sont disponibles.<strong>r\u00e9flexion<\/strong>Ceci peut \u00eatre facilement r\u00e9alis\u00e9 en utilisant .\n<\/p>\n<h2 class=\"common_title\"><a name=\"3\">Ex\u00e9cution de l&#039;\u00e9chantillon<\/a><\/h2>\n<p>\nVeuillez ex\u00e9cuter l&#039;exemple et exp\u00e9rimenter une programmation de type framework.<br \/>\n<br \/>\nIci, nous utilisons la classe suivante<strong>r\u00e9flexion<\/strong>Montre une utilisation simple de l\u2019utilitaire.<br \/>\n<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/Main.txt\" target=\"_blank\"><strong>Main.java<\/strong><\/a>...Classe \u00e0 ex\u00e9cuter<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/BeanUtil.txt\" target=\"_blank\"><strong>BeanUtil.java<\/strong><\/a>...Classe utilitaire de r\u00e9flexion<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/FreeSoft.txt\" target=\"_blank\"><strong>FreeSoft.java<\/strong><\/a>...Utilis\u00e9 comme r\u00e9flexion dans une classe qui repr\u00e9sente le logiciel libre.<\/p>\n<p><strong>\u25cfLorsqu&#039;il est ex\u00e9cut\u00e9 normalement<\/strong>\n<\/p>\n<div class=\"point\">\nSystem.out.println(<span style=\"color: #0000FF;\">\u00ab \uff1e\uff1e\uff1eCas normal \u00bb<\/span>); <br \/>\nFreeSoft freeSoft = nouveau FreeSoft(); <br \/>\nfreeSoft.setName<span style=\"color: #0000FF;\">(\u00ab\u00a0Chat&amp;Messenger Chat et Messenger !!\u00a0\u00bb<\/span>); <br \/>\nfreeSoft.showName(); <br \/>\nfreeSoft.showPrice(0);\n<\/div>\n<p>\n<strong>\u25cfLorsqu&#039;il est ex\u00e9cut\u00e9 en utilisant la r\u00e9flexion<\/strong><\/p>\n<div class=\"point\">\nSystem.out.println<span style=\"color: #0000FF;\">(\u00ab\u00a0\uff1e\uff1e\uff1eLors de l&#039;utilisation de la r\u00e9flexion\u00a0\u00bb<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/Cr\u00e9er une instance de la classe FreeSoft <\/span><br \/>\nObjet InvocationObject = BeanUtil.newInstance<span style=\"color: #0000FF;\">(\u00ab Logiciel Libre \u00bb<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/D\u00e9finissez la valeur dans le champ de nom. <\/span><br \/>\nBeanUtil.setProperty(invokeObject, <span style=\"color: #0000FF;\">&quot;nom&quot;<\/span> , <span style=\"color: #0000FF;\">&quot;Chat&amp;Messenger Chat et Messenger !!&quot;<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ Ex\u00e9cute la m\u00e9thode showName() de FreeSoft. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">&quot;showName&quot;<\/span>, nul); <br \/>\n<span style=\"color: #00CC33;\">\/\/ Ex\u00e9cute la m\u00e9thode showPrice() de FreeSoft. <\/span><br \/>\n<span style=\"color: #00CC33;\">\/\/ Si la m\u00e9thode a des arguments, ils doivent \u00eatre pass\u00e9s sous forme de tableau de type Objet. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">\u00ab afficher le prix \u00bb<\/span>,nouvel Objet[]{nouvel Entier(0)});\n<\/div>\n\n<p><strong>\u25cfR\u00e9sultats d&#039;ex\u00e9cution<\/strong><br \/>\n<br \/>Les r\u00e9sultats d&#039;ex\u00e9cution sont les m\u00eames que ce soit dans le cas normal ou lors de l&#039;utilisation de la r\u00e9flexion.<\/p>\n<div class=\"console\">\n&gt;&gt;&gt; Cas normal<br \/>\n<br \/>Nom du logiciel : Chat&amp;Messenger Chat et messagerie ! !<br \/>\n<br \/>Prix : 0 yen<\/p>\n<p>&gt;&gt;&gt; Lors de l&#039;utilisation de la r\u00e9flexion<br \/>\n<br \/>Nom du logiciel : Chat&amp;Messenger Chat et messagerie ! !<br \/>\n<br \/>Prix : 0 yen\n<\/div>\n\n<h2 class=\"common_title\"><a name=\"4\">D\u00e9tails de la m\u00e9thode BeanUtil<\/a><\/h2>\n<p><a name=\"newInstance(String)\"><!-- --><\/a><\/p>\n<h2>\nnouvelleInstance<\/h2>\n<pre>objet statique public <b>nouvelleInstance<\/b>(String className) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>G\u00e9n\u00e8re et renvoie une instance \u00e0 partir de la cha\u00eene &quot;className&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>nom du cours<\/code> \u2013 Nom de classe complet\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>Une nouvelle instance d&#039;un nom de classe complet\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nnouvelleInstance<\/h2>\n<pre>objet statique public <b>nouvelleInstance<\/b>(String className, Object[] argObj) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>G\u00e9n\u00e8re et renvoie une instance \u00e0 partir de la cha\u00eene &quot;className&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>nom du cours<\/code> \u2013 Nom de classe complet<\/dd>\n<dd><code>argObj<\/code> \u2013 Arguments du constructeur\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>Une nouvelle instance d&#039;un nom de classe complet\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class)\"><!-- --><\/a><\/p>\n<h2>\nnouvelleInstance<\/h2>\n<pre>objet statique public <b>nouvelleInstance<\/b>(Classe Clazz) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>G\u00e9n\u00e8re et renvoie une instance de la classe &quot;clazz&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>clazz<\/code> - classe\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>nouvelle instance de clazz\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class, Object[])\"><!-- --><\/a><\/p>\n<h2>\nnouvelleInstance<\/h2>\n<pre>objet statique public <b>nouvelleInstance<\/b>(Classe clazz, Object[] argObj) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>G\u00e9n\u00e8re et renvoie une instance de la classe &quot;clazz&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>clazz<\/code> - classe<\/dd>\n<dd><code>argObj<\/code> \u2013 Arguments du constructeur\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>nouvelle instance de clazz\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"setProperty(Object, String, Object)\"><!-- --><\/a><\/p>\n<h2>\nsetProperty<\/h2>\n<pre>Vide public statique <b>setProperty<\/b>(Object InvokeObject, String fieldName, Object value) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>Appelez la m\u00e9thode setter du champ &quot;fieldName&quot; de l&#039;objet &quot;invokeObject&quot; et stockez la valeur &quot;value&quot;.<\/p>\n<p> S&#039;il n&#039;y a pas de m\u00e9thode de d\u00e9finition, la valeur sera d\u00e9finie directement sur le champ. Cependant, dans ce cas, le modificateur d&#039;acc\u00e8s de la propri\u00e9t\u00e9 cible doit \u00eatre public.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>invoquerObjet<\/code> \u2013 Objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>nom de domaine<\/code> \u2013 Nom de la propri\u00e9t\u00e9 de l\u2019objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>valeur<\/code> \u2013 Valeur \u00e0 d\u00e9finir\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code> \u2013 L&#039;exception suivante se produit.\n<\/dd>\n<dd><code>InvocationTargetExceptionInvocationTargetException<\/code> \u2013 Si la m\u00e9thode sous-jacente l\u00e8ve une exception\n<\/dd>\n<dd><code>Exception d&#039;acc\u00e8s ill\u00e9gal<\/code> \u2013 Cet objet m\u00e9thode est Java<br \/>\n             Lorsque le contr\u00f4le d&#039;acc\u00e8s \u00e0 la langue est impl\u00e9ment\u00e9 et que la m\u00e9thode sous-jacente n&#039;est pas accessible\n<\/dd>\n<dd><code>NoSuchMethodException<\/code> \u2013 Si une m\u00e9thode portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9e<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getProperty(Object, String)\"><!-- --><\/a><\/p>\n<h2>\nobtenirPropri\u00e9t\u00e9<\/h2>\n<pre>objet statique public <b>obtenirPropri\u00e9t\u00e9<\/b>(Object EnsureObject, String fieldName) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>Appelle la m\u00e9thode getter du champ fieldName de l&#039;objet EnsureObject pour obtenir la valeur.<br \/>\n S&#039;il n&#039;y a pas de m\u00e9thode getter, la valeur sera r\u00e9cup\u00e9r\u00e9e directement du champ. Cependant, dans ce cas, le modificateur d&#039;acc\u00e8s de la propri\u00e9t\u00e9 cible doit \u00eatre public.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>invoquerObjet<\/code> \u2013 Objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>nom de domaine<\/code> \u2013 Nom de la propri\u00e9t\u00e9 de l\u2019objet \u00e0 ex\u00e9cuter\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>Valeur de retour de la m\u00e9thode Getter\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code> \u2013 L&#039;exception suivante se produit.\n<\/dd>\n<dd><code>InvocationTargetExceptionInvocationTargetException<\/code> \u2013 Si la m\u00e9thode sous-jacente l\u00e8ve une exception\n<\/dd>\n<dd><code>Exception d&#039;acc\u00e8s ill\u00e9gal<\/code> \u2013 Cet objet m\u00e9thode est Java<br \/>\n             Lorsque le contr\u00f4le d&#039;acc\u00e8s \u00e0 la langue est impl\u00e9ment\u00e9 et que la m\u00e9thode sous-jacente n&#039;est pas accessible\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 Si un champ portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"invoke(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\ninvoquer<\/h2>\n<pre>objet statique public <b>invoquer<\/b>(Object InvokeObject, String callMethod, Object[] argObjects) l\u00e8ve InvocationTargetException, IllegalAccessException, NoSuchMethodException<\/pre>\n<dl>\n<dd>Ex\u00e9cute la m\u00e9thode &quot;callMethod&quot; de l&#039;objet &quot;invokeObject&quot;.<br \/>\n S&#039;il existe une valeur de retour, elle peut \u00eatre obtenue sous forme d&#039;objet.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>invoquerObjet<\/code> \u2013 Objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>m\u00e9thode d&#039;appel<\/code> \u2013 Nom de la m\u00e9thode \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>Objetsarg<\/code> \u2013 S&#039;il y a des arguments, transmettez-les sous forme de tableau d&#039;objets. S&#039;il n&#039;y a aucun argument, transmettez null.\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>Valeur de retour de l&#039;ex\u00e9cution de &quot;callMethod&quot;\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>InvocationTargetExceptionInvocationTargetException<\/code> \u2013 Si la m\u00e9thode sous-jacente l\u00e8ve une exception\n<\/dd>\n<dd><code>Exception d&#039;acc\u00e8s ill\u00e9gal<\/code> \u2013 Cet objet m\u00e9thode est Java<br \/>\n             Lorsque le contr\u00f4le d&#039;acc\u00e8s \u00e0 la langue est impl\u00e9ment\u00e9 et que la m\u00e9thode sous-jacente n&#039;est pas accessible\n<\/dd>\n<dd><code>NoSuchMethodException<\/code> \u2013 Si une m\u00e9thode portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9e<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"findMethod(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nm\u00e9thode de recherche<\/h2>\n<pre>m\u00e9thode statique publique <b>m\u00e9thode de recherche<\/b>(Object InvokeObject, String callMethod, Object[] argObjects) l\u00e8ve NoSuchMethodException<\/pre>\n<dl>\n<dd>Recherchez la m\u00e9thode &#039;callMethod&#039; de l&#039;objet &#039;invokeObject&#039;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>invoquerObjet<\/code> \u2013 Objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>m\u00e9thode d&#039;appel<\/code> \u2013 Nom de la m\u00e9thode de l\u2019objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>Objetsarg<\/code> \u2013 S&#039;il y a des arguments, transmettez-les sous forme de tableau d&#039;objets. S&#039;il n&#039;y a aucun argument, transmettez null.\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>Un objet Method qui correspond aux conditions d&#039;argument sp\u00e9cifi\u00e9es\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>NoSuchMethodException<\/code> \u2013 Si aucune m\u00e9thode de correspondance n\u2019est trouv\u00e9e, ou si le nom est \u00ab \u00bb ou \u00ab \u00bb<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"setField(Object, String, Object)\"><!-- --><\/a><\/p>\n<h2>\nsetField<\/h2>\n<pre>Vide public statique <b>setField<\/b>(Object EnsureObject, String fieldName, Object value) l\u00e8ve IllegalAccessException, NoSuchFieldException<\/pre>\n<dl>\n<dd>Stocke la valeur &quot;value&quot; dans le nom de champ &quot;fieldName&quot; de l&#039;objet \u00e0 ex\u00e9cuter &quot;invokeObject&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>invoquerObjet<\/code> \u2013 Objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>nom de domaine<\/code> \u2013 Nom du champ de l\u2019objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>valeur<\/code> \u2013 Valeur \u00e0 d\u00e9finir\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception d&#039;acc\u00e8s ill\u00e9gal<\/code> \u2013 Le champ sur lequel l&#039;objet sp\u00e9cifi\u00e9 est bas\u00e9 (ou sa sous-classe ou son impl\u00e9menteur)<br \/>\n             n&#039;est pas une instance de la classe ou de l&#039;interface qu&#039;il d\u00e9clare, ou si la conversion de d\u00e9ballage \u00e9choue\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 Si un champ portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\nobtenirField<\/h2>\n<pre>objet statique public <b>obtenirField<\/b>(Object InvokeObject, String fieldName) l\u00e8ve IllegalAccessException, NoSuchFieldException<\/pre>\n<dl>\n<dd>Obtient la valeur du nom de champ &quot;fieldName&quot; de l&#039;objet \u00e0 ex\u00e9cuter &quot;invokeObject&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>invoquerObjet<\/code> \u2013 Objet \u00e0 ex\u00e9cuter<\/dd>\n<dd><code>nom de domaine<\/code> \u2013 Nom du champ de l\u2019objet \u00e0 ex\u00e9cuter\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>valeur de retour\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception d&#039;acc\u00e8s ill\u00e9gal<\/code> \u2013 Le champ sur lequel l&#039;objet sp\u00e9cifi\u00e9 est bas\u00e9 (ou sa sous-classe ou son impl\u00e9menteur)<br \/>\n             n&#039;est pas une instance de la classe ou de l&#039;interface qu&#039;il d\u00e9clare, ou si la conversion de d\u00e9ballage \u00e9choue\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 Si un champ portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"hasField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\nhasField<\/h2>\n<pre>bool\u00e9en statique public <b>hasField<\/b>(Objet Objet, String fieldName) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>V\u00e9rifie si l&#039;objet &#039;object&#039; d\u00e9clare le nom du champ &#039;fieldName&#039;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>objet<\/code> \u2013 Objet \u00e0 inspecter<\/dd>\n<dd><code>nom de domaine<\/code> \u2013 Nom du champ \u00e0 v\u00e9rifier\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>vrai si d\u00e9clar\u00e9\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getAllFields(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetAllFields<\/h2>\n<pre>public statique java.util.TreeSet <b>getAllFields<\/b>(Objet objet) l\u00e8ve une exception<\/pre>\n<dl>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>objet<\/code> &#8211;\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>Exception<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getShortClassName(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetShortClassName<\/h2>\n<pre>Cha\u00eene statique publique <b>getShortClassName<\/b>(Objet Objet)<\/pre>\n<dl>\n<dd>Obtient le nom de classe non qualifi\u00e9 d&#039;un objet.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>objet<\/code> &#8211;\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getShortClassName(String)\"><!-- --><\/a><\/p>\n<h2>\ngetShortClassName<\/h2>\n<pre>Cha\u00eene statique publique <b>getShortClassName<\/b>(Nom de classe de cha\u00eene)<\/pre>\n<dl>\n<dd>Obtient le nom de classe \u00e0 partir du nom complet.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>nom du cours<\/code> &#8211;\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getFieldName(String)\"><!-- --><\/a><\/p>\n<h2>\ngetFieldName<\/h2>\n<pre>Cha\u00eene statique publique <b>getFieldName<\/b>(Nom de la m\u00e9thode de cha\u00eene)<\/pre>\n<dl>\n<dd>Modifiez le nom du champ \u00e0 partir du nom de la m\u00e9thode. Doit \u00eatre conforme aux conventions JavaBeans.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>NomM\u00e9thode<\/code> &#8211;\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"isClassExist(String)\"><!-- --><\/a><\/p>\n<h2>\nestClassExist<\/h2>\n<pre>bool\u00e9en statique public <b>estClassExist<\/b>(Nom de classe de cha\u00eene)<\/pre>\n<dl>\n<dd>V\u00e9rifie que le nom complet \u00ab className \u00bb est un nom de classe existant.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>nom du cours<\/code> &#8211;\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getPropertyDescriptors(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetPropertyDescriptors<\/h2>\n<pre>Descripteur de propri\u00e9t\u00e9 statique public[] <b>getPropertyDescriptors<\/b>(Objet objet) lance IntrospectionException<\/pre>\n<dl>\n<dd>Renvoie un PropertyDescriptor qui contient des informations sur l&#039;objet pour \u00ab\u00a0objet\u00a0\u00bb.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Param\u00e8tres:<\/b><\/dt>\n<dd><code>objet<\/code> &#8211;\n<\/dd>\n<dt><b>Valeur de retour\u00a0:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>exception:<\/b>\n<\/dt>\n<dd><code>java.beans.IntrospectionException<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<h2 class=\"common_title\"><a name=\"5\">Code source de BeanUtil<\/a><\/h2>\n<p><textarea readonly=\"readonly\" style=\"font-size: 13px;height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">import java.beans.BeanInfo;<br \/>\nimport java.beans.IntrospectionException;<br \/>\nimport java.beans.Introspector;<br \/>\nimport java.beans.PropertyDescriptor;<br \/>\nimport java.lang.reflect.Constructor;<br \/>\nimport java.lang.reflect.Field;<br \/>\nimport java.lang.reflect.InvocationTargetException;<br \/>\nimport java.lang.reflect.Method;<br \/>\nimport java.math.BigDecimal;<br \/>\nimport java.sql.Timestamp;<br \/>\nimport java.text.SimpleDateFormat;<br \/>\nimport java.util.Calendar;<br \/>\nimport java.util.Date;<br \/>\nimport java.util.HashMap;<br \/>\nimport java.util.Map;<br \/>\nimport java.util.StringTokenizer;<br \/>\nimport java.util.TreeSet;<\/p>\n<p>\/**<br \/>\n * Classe utilitaire qui vous permet d&#039;utiliser facilement l&#039;API de r\u00e9flexion de Java<br \/>\n *\/<br \/>\nclasse publique BeanUtil {<\/p>\n<p>    \/**   *\/<br \/>\n    cha\u00eene finale statique priv\u00e9e GET = \u00ab\u00a0GET\u00a0\u00bb\u00a0;<br \/>\n    \/**   *\/<br \/>\n    Cha\u00eene finale statique priv\u00e9e SET = \u00ab\u00a0SET\u00a0\u00bb\u00a0;<\/p>\n<p>    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300enouvelleInstance\u300f<br \/>\n    \/**<br \/>\n     * G\u00e9n\u00e8re et renvoie une instance \u00e0 partir de la cha\u00eene &quot;className&quot;.<br \/>\n     * @param className nom de classe complet<br \/>\n     * @return nouvelle instance du nom de classe complet<br \/>\n     * @jette une exception<br \/>\n     *\/<br \/>\n    L&#039;objet statique public newInstance (String className) l\u00e8ve une exception {<br \/>\n        essayer {<br \/>\n            return Class.forName(className).newInstance();<br \/>\n        } catch (NoClassDefFoundErrore) {<br \/>\n            System.err.println(\u00ab NoClassDefFoundError : \u00bb + className);<br \/>\n            lancez e;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * G\u00e9n\u00e8re et renvoie une instance \u00e0 partir de la cha\u00eene &quot;className&quot;.<br \/>\n     * @param className nom de classe complet<br \/>\n     * Argument du constructeur @param argObj<br \/>\n     * @return nouvelle instance du nom de classe complet<br \/>\n     * @jette une exception<br \/>\n     *\/<br \/>\n    Objet statique public newInstance (String className, Object[] argObj)<br \/>\n            lance une exception {<br \/>\n        Class[] argClass = new Class[argObj.length];<br \/>\n        pour (int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        Constructeur c = Class.forName(className).getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Cr\u00e9ez et renvoyez une instance de la classe &#039;clazz&#039;.<br \/>\n     * Classe @param clazz<br \/>\n     * @return nouvelle instance de clazz<br \/>\n     * @jette une exception<br \/>\n     *\/<br \/>\n    L&#039;objet statique public newInstance (classe clazz) l\u00e8ve une exception {<br \/>\n        return clazz.newInstance();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Cr\u00e9ez et renvoyez une instance de la classe &#039;clazz&#039;.<br \/>\n     * Classe @param clazz<br \/>\n     * Argument du constructeur @param argObj<br \/>\n     * @return nouvelle instance de clazz<br \/>\n     * @jette une exception<br \/>\n     *\/<br \/>\n    Objet statique public newInstance (Classe clazz, Objet [] argObj)<br \/>\n            lance une exception {<br \/>\n        Class[] argClass = new Class[argObj.length];<br \/>\n        pour (int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        Constructeur c = clazz.getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/\/ ---------------------&quot;M\u00e9thode&quot;<br \/>\n    \/**<br \/>\n     * M\u00e9thode de d\u00e9finition du champ &quot;fieldName&quot; de l&#039;objet &quot;invokeObject&quot;<br \/>\n     * Appelez, stockez la valeur \u00ab\u00a0valeur\u00a0\u00bb.<br \/>\n     * &lt;br&gt;<br \/>\n     * S&#039;il n&#039;y a pas de m\u00e9thode de d\u00e9finition, d\u00e9finissez la valeur directement sur le champ.<br \/>\n     * Cependant, dans ce cas, le modificateur d&#039;acc\u00e8s de la propri\u00e9t\u00e9 cible doit \u00eatre public.<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param fieldName Nom de la propri\u00e9t\u00e9 de l&#039;objet \u00e0 ex\u00e9cuter<br \/>\n     * @param value valeur \u00e0 d\u00e9finir<br \/>\n     * Exception @throws L&#039;exception suivante se produit.<br \/>\n     * @throws InvocationTargetException si la m\u00e9thode sous-jacente l\u00e8ve une exception<br \/>\n     * @throws IllegalAccessException Si cet objet m\u00e9thode est Java<br \/>\n     * Lorsque le contr\u00f4le d&#039;acc\u00e8s \u00e0 la langue est impl\u00e9ment\u00e9 et que la m\u00e9thode sous-jacente n&#039;est pas accessible<br \/>\n     * @throws NoSuchMethodException si une m\u00e9thode portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9e<br \/>\n     *\/<br \/>\n    public static void setProperty (Object invoqu\u00e9Object, String fieldName,<br \/>\n            Valeur de l&#039;objet) l\u00e8ve une exception {<br \/>\n        essayer {<br \/>\n            M\u00e9thode m\u00e9thode = searchMethod(invokeObject, fieldName, SET);<br \/>\n            Class[] paramClasses = method.getParameterTypes();<br \/>\n            Objet[] valueArray = null\u00a0;<br \/>\n            if (paramClasses[0].isInstance(value)) {<br \/>\n                \/\/Ne pas convertir si l&#039;objet \u00e0 d\u00e9finir est une sous-classe de la classe d&#039;argument.<br \/>\n                valueArray = new Object[] { valeur }\u00a0;<br \/>\n            } autre {<br \/>\n                valueArray = nouvel objet[] { convObject(value, paramClasses[0]<br \/>\n                        .getName()) };<br \/>\n            }<br \/>\n            method.invoke(invokeObject, valueArray);<br \/>\n        } catch (NoSuchMethodException e) {<br \/>\n            essayer {<br \/>\n                \/\/ S&#039;il n&#039;y a pas de m\u00e9thode setter, d\u00e9finissez-la directement sur le champ.<br \/>\n                setField (invokeObject, fieldName, valeur);<br \/>\n            } catch (NoSuchFieldException fe) {<br \/>\n                Cha\u00eene errorMes = \u00ab\u00a0\\nClass\u00a0\u00bb + getShortClassName (invokeObject)<br \/>\n                        + &quot;est&quot; + &quot;pour le champ &quot;&quot; + nom du champ + &quot;&quot;\\n&quot;<br \/>\n                        + &quot;Il n&#039;existe pas de m\u00e9thode de d\u00e9finition accessible, et.&quot;<br \/>\n                        + \u00ab Champ \u00ab \u00bb + Nom du champ<br \/>\n                        + &quot;&quot; n&#039;est pas non plus public. &quot; + &quot; &quot;\u00a0;<br \/>\n                lancer une nouvelle IllegalAccessException (errorMes);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * M\u00e9thode Getter du champ fieldName de l&#039;objet EnsureObject<br \/>\n     * Obtenez la valeur de l&amp;#039;appel. &lt;br&gt;<br \/>\n     * S&#039;il n&#039;y a pas de m\u00e9thode getter, la valeur sera obtenue directement du champ.<br \/>\n     * Cependant, dans ce cas, le modificateur d&#039;acc\u00e8s de la propri\u00e9t\u00e9 cible doit \u00eatre public.<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param fieldName Nom de la propri\u00e9t\u00e9 de l&#039;objet \u00e0 ex\u00e9cuter<br \/>\n     * @return valeur de retour de la m\u00e9thode getter<br \/>\n     * Exception @throws L&#039;exception suivante se produit.<br \/>\n     * @throws InvocationTargetException si la m\u00e9thode sous-jacente l\u00e8ve une exception<br \/>\n     * @throws IllegalAccessException Si cet objet m\u00e9thode est Java<br \/>\n     * Lorsque le contr\u00f4le d&#039;acc\u00e8s \u00e0 la langue est impl\u00e9ment\u00e9 et que la m\u00e9thode sous-jacente n&#039;est pas accessible<br \/>\n     * @throws NoSuchFieldException si un champ portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9<br \/>\n     *\/<br \/>\n    Objet statique public getProperty (Objet InvoquerObject, String fieldName)<br \/>\n            lance une exception {<br \/>\n        essayer {<br \/>\n            M\u00e9thode m\u00e9thode = searchMethod(invokeObject, fieldName, GET);<br \/>\n            return method.invoke(invokeObject, null);<br \/>\n        } catch (NoSuchMethodException e) {<br \/>\n            return getField (invokeObject, fieldName);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ex\u00e9cute la m\u00e9thode &quot;callMethod&quot; de l&#039;objet &quot;invokeObject&quot;.<br \/>\n     * S&#039;il existe une valeur de retour, elle peut \u00eatre obtenue sous forme de type Objet.<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param callMethod Nom de la m\u00e9thode \u00e0 ex\u00e9cuter<br \/>\n     * @param argObjects S&#039;il y a un argument, transmettez-le sous forme de tableau d&#039;objets.<br \/>\n     * Passez null s&#039;il n&#039;y a pas d&#039;argument.<br \/>\n     * @return Valeur de retour de l&#039;ex\u00e9cution de &quot;callMethod&quot;<br \/>\n     * @throws InvocationTargetException si la m\u00e9thode sous-jacente l\u00e8ve une exception<br \/>\n     * @throws IllegalAccessException Si cet objet m\u00e9thode est Java<br \/>\n     * Lorsque le contr\u00f4le d&#039;acc\u00e8s \u00e0 la langue est impl\u00e9ment\u00e9 et que la m\u00e9thode sous-jacente n&#039;est pas accessible<br \/>\n     * @throws NoSuchMethodException si une m\u00e9thode portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9e<br \/>\n     *\/<br \/>\n    appel d&#039;objet statique public (objet invoquerobjet, cha\u00eene callMethod,<br \/>\n            Object[] argObjects) lance InvocationTargetException,<br \/>\n            IllegalAccessException, NoSuchMethodException {<br \/>\n        M\u00e9thode m\u00e9thode = findMethod(invokeObject, callMethod, argObjects);<br \/>\n        return method.invoke(invokeObject, argObjects);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Recherchez la m\u00e9thode &#039;callMethod&#039; de l&#039;objet &#039;invokeObject&#039;.<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param callMethod Nom de la m\u00e9thode de l&#039;objet \u00e0 ex\u00e9cuter<br \/>\n     * @param argObjects S&#039;il y a un argument, transmettez-le sous forme de tableau d&#039;objets.<br \/>\n     * Passez null s&#039;il n&#039;y a pas d&#039;argument.<br \/>\n     * Objet de m\u00e9thode @return qui correspond aux conditions d&#039;argument sp\u00e9cifi\u00e9es<br \/>\n     * @throws NoSuchMethodException Si aucune m\u00e9thode correspondante n&#039;est trouv\u00e9e,<br \/>\n     * Ou si le nom est \u00ab &quot; ou &quot; &quot;dans le cas d<br \/>\n     *\/<br \/>\n    M\u00e9thode statique publique findMethod (Object InvookeObject, String callMethod,<br \/>\n            Object[] argObjects) lance NoSuchMethodException {<br \/>\n        Classe[] paramClasses = null;<br \/>\n        M\u00e9thodes Method[] = InvoquerObject.getClass().getMethods();<br \/>\n        haut\u00a0: pour (int i = 0\u00a0; i &lt; m\u00e9thodes.length\u00a0; i++) {<br \/>\n            if (methods[i].getName().equals(callMethod)) {<br \/>\n                si (argObjects == null<br \/>\n                        &amp;&amp; m\u00e9thodes[i].getParameterTypes().length == 0) {<br \/>\n                    m\u00e9thodes de retour[i]\u00a0;<br \/>\n                }<br \/>\n                si (argObjects == null) {<br \/>\n                    continuer;<br \/>\n                }<br \/>\n                paramClasses = m\u00e9thodes[i].getParameterTypes();<br \/>\n                if (paramClasses.length == argObjects.length) {<br \/>\n                    \/\/ Valide tous les types de liste de param\u00e8tres et types d&#039;arguments<br \/>\n                    pour (int j = 0; j &lt; paramClasses.length; j++) {<br \/>\n                        Classe paramClass = paramClasses[j];<br \/>\n                        Objet argObj = argObjects[j];<br \/>\n                        \/\/ Si le type d&#039;argument est primitif, l&#039;objet argument<br \/>\n                        \/\/ n&#039;est pas nul et est primitif<br \/>\n                        \/\/Si c&#039;est une sous-classe de Number, c&#039;est OK.<br \/>\n                        si (argObj == null) {<br \/>\n                            continuer;<br \/>\n                        }<br \/>\n                        si (paramClass.isPrimitive()<br \/>\n                                &amp;&amp; (argObj instance du Nombre || argObj<br \/>\n                                        .getClass().isPrimitive())) {<br \/>\n                            continuer;<br \/>\n                        }<br \/>\n                        si (!paramClass.isInstance(argObj)) {<br \/>\n                            \/\/ Passe \u00e0 la m\u00e9thode suivante lorsque les types ne sont pas compatibles avec la conversion implicite<br \/>\n                            continuez en haut\u00a0;<br \/>\n                        }<br \/>\n                    }<br \/>\n                    m\u00e9thodes de retour[i]\u00a0;<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        Cha\u00eene paramLength = (paramClasses != null) ? Entier<br \/>\n                .toString(paramClasses.length) : &quot;&quot;;<br \/>\n        String errorMes = getShortClassName (invokeObject) + \u00ab m\u00e9thode \u00bb<br \/>\n                + callMethod + &quot;Il n&#039;y a pas.&quot; + &quot;[ paramClasses.length ] = &quot;<br \/>\n                + paramLength + \u00ab ,[ argObjects.length ] = \u00bb + argObjects.length<br \/>\n                + &#8220;&#8221;;<br \/>\n        lancer une nouvelle NoSuchMethodException (errorMes);<br \/>\n    }<\/p>\n<p>    \/\/ ----------------------&quot;Champ&quot;<br \/>\n    \/**<br \/>\n     * Valeur du nom de champ &quot;fieldName&quot; de l&#039;objet &quot;invokeObject&quot; \u00e0 ex\u00e9cuter<br \/>\n     * Stocke la \u00ab\u00a0valeur\u00a0\u00bb.<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param fieldName Nom du champ de l&#039;objet \u00e0 ex\u00e9cuter<br \/>\n     * @param value valeur \u00e0 d\u00e9finir<br \/>\n     * @throws IllegalAccessException Si l&#039;objet sp\u00e9cifi\u00e9 est<br \/>\n     * champ (ou sa sous-classe ou impl\u00e9menteur)<br \/>\n     * S&#039;il ne s&#039;agit pas d&#039;une instance d&#039;une classe ou d&#039;une interface, d\u00e9clarez<br \/>\n     * ou si la conversion de d\u00e9ballage \u00e9choue<br \/>\n     * @throws NoSuchFieldException si un champ portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9<br \/>\n     *\/<br \/>\n    public static void setField (Object invoqu\u00e9Object, String fieldName,<br \/>\n            Valeur de l&#039;objet) lance IllegalAccessException, NoSuchFieldException {<br \/>\n        Champ field = searchField(invokeObject, fieldName);<br \/>\n        String className = field.getType().getName();<br \/>\n        Objet convObj = null\u00a0;<br \/>\n        if (field.getType().isInstance(value)) {<br \/>\n            convObj = valeur\u00a0;<br \/>\n        } autre {<br \/>\n            convObj = convObject(value, className);<br \/>\n        }<br \/>\n        field.set(invokeObject, convObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * D\u00e9finissez la valeur du nom de champ &quot;fieldName&quot; de l&#039;objet d&#039;ex\u00e9cution &quot;invokeObject&quot; sur<br \/>\n     * Obtenir.<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param fieldName Nom du champ de l&#039;objet \u00e0 ex\u00e9cuter<br \/>\n     * @return valeur de retour<br \/>\n     * @throws IllegalAccessException Si l&#039;objet sp\u00e9cifi\u00e9 est<br \/>\n     * champ (ou sa sous-classe ou impl\u00e9menteur)<br \/>\n     * S&#039;il ne s&#039;agit pas d&#039;une instance d&#039;une classe ou d&#039;une interface, d\u00e9clarez<br \/>\n     * ou si la conversion de d\u00e9ballage \u00e9choue<br \/>\n     * @throws NoSuchFieldException si un champ portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9<br \/>\n     *\/<br \/>\n    Objet statique public getField (Object EnsureObject, String fieldName)<br \/>\n            lance IllegalAccessException, NoSuchFieldException {<br \/>\n        Champ field = searchField(invokeObject, fieldName);<br \/>\n        return field.get(invokeObject);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * V\u00e9rifiez si l&#039;objet &quot;object&quot; d\u00e9clare le nom du champ &quot;fieldName&quot;<br \/>\n     * confirmer.<br \/>\n     * @param object Objet \u00e0 inspecter<br \/>\n     * @param fieldName Nom du champ \u00e0 inspecter<br \/>\n     * @return true si d\u00e9clar\u00e9<br \/>\n     * @jette une exception<br \/>\n     *\/<br \/>\n    public static boolean hasField (objet Object, String fieldName)<br \/>\n            lance une exception {<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        pour (int i = 0; i &lt; props.length; i++) {<br \/>\n            String _fieldName = props[i].getName();<br \/>\n            if (fieldName.equals(_fieldName)) {<br \/>\n                renvoie vrai\u00a0;<br \/>\n            }<br \/>\n        }<br \/>\n        renvoie faux\u00a0;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * Objet @param<br \/>\n     * @retour<br \/>\n     * @jette une exception<br \/>\n     *\/<br \/>\n    public static TreeSet getAllFields (objet Object) l\u00e8ve une exception {<\/p>\n<p>        TreeSet fieldSet = new TreeSet();<br \/>\n        \/\/ R\u00e9cup\u00e8re le nom de la propri\u00e9t\u00e9 \u00e0 partir de la m\u00e9thode<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        pour (int i = 0; i &lt; props.length; i++) {<br \/>\n            Cha\u00eene fieldName = props[i].getName();<br \/>\n            fieldSet.add(fieldName);<\/p>\n<p>        }<\/p>\n<p>        \/\/ R\u00e9cup\u00e8re le nom de la propri\u00e9t\u00e9 \u00e0 partir du champ<br \/>\n        Champs Field[] = object.getClass().getFields();<br \/>\n        pour (int i = 0; i &lt; champs.longueur; i++) {<br \/>\n            Cha\u00eene fieldName = field[i].getName();<br \/>\n            si (!fieldSet.contains(fieldName)) {<br \/>\n                fieldSet.add(fieldName);<br \/>\n            }<br \/>\n        }<br \/>\n        retourner fieldSet\u00a0;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param fieldName Nom du champ de l&#039;objet \u00e0 ex\u00e9cuter<br \/>\n     * @return Objets class\u00e9s qui correspondent aux conditions d&#039;argument sp\u00e9cifi\u00e9es<br \/>\n     * @throws NoSuchFieldException si un champ portant le nom sp\u00e9cifi\u00e9 n&#039;est pas trouv\u00e9<br \/>\n     *\/<br \/>\n    Champ statique priv\u00e9 searchField (Objet InvoquerObject, String fieldName)<br \/>\n            lance NoSuchFieldException {<br \/>\n        essayer {<br \/>\n            return InvoquerObject.getClass().getField(fieldName);<br \/>\n        } catch (NoSuchFieldException e) {<br \/>\n            \/\/ Cette port\u00e9e est obtenue \u00e0 partir du nom de la colonne de la table<br \/>\n            fieldName = checkFieldName(fieldName);<br \/>\n            Champs Field[] = InvoquerObject.getClass().getFields();<br \/>\n            pour (int i = 0; i &lt; champs.longueur; i++) {<br \/>\n                if (fields[i].getName().equalsIgnoreCase(fieldName)) {<br \/>\n                    champs de retour[i]\u00a0;<br \/>\n                }<br \/>\n            }<br \/>\n            lancer une nouvelle NoSuchFieldException (fieldName);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/\/ ----------------------&quot; autres &quot;<\/p>\n<p>    \/**<br \/>\n     * Obtenez le nom de classe non qualifi\u00e9 d&#039;un objet.<br \/>\n     * Objet @param<br \/>\n     * @retour<br \/>\n     *\/<br \/>\n    public static String getShortClassName (objet objet) {<br \/>\n        si (objet == null) {<br \/>\n            renvoyer \u00ab nul \u00bb\u00a0;<br \/>\n        }<br \/>\n        Nom de la cha\u00eene = object.getClass().getName();<br \/>\n        return getShortClassName(nom);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Obtenez le nom de la classe \u00e0 partir du nom complet.<br \/>\n     * @param nom de classe<br \/>\n     * @retour<br \/>\n     *\/<br \/>\n    cha\u00eene statique publique getShortClassName (String className) {<br \/>\n        int index = className.lastIndexOf(&quot;.&quot;);<br \/>\n        return className.substring(index + 1);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Modifiez le nom du champ \u00e0 partir du nom de la m\u00e9thode. Conforme aux conventions JavaBeans<br \/>\n     * est n\u00e9cessaire.<br \/>\n     * @param nom_m\u00e9thode<br \/>\n     * @retour<br \/>\n     *\/<br \/>\n    public static String getFieldName (String methodName) {<br \/>\n        Cha\u00eene fieldName = null\u00a0;<br \/>\n        if (methodName.startsWith(&quot;est&quot;)) {<br \/>\n            fieldName = methodName.substring(2);<br \/>\n        } autre {<br \/>\n            fieldName = methodName.substring(3);<br \/>\n        }<br \/>\n        fieldName = convString(fieldName, 0, \u00ab L \u00bb);<br \/>\n        retourner le nom du champ\u00a0;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * V\u00e9rifiez que le nom complet \u00ab className \u00bb est un nom de classe existant.<br \/>\n     * @param nom de classe<br \/>\n     * @retour<br \/>\n     *\/<br \/>\n    public static boolean isClassExist (String className) {<br \/>\n        essayer {<br \/>\n            Class.forName(className);<br \/>\n            renvoie vrai\u00a0;<br \/>\n        } attraper (Exception e) {<br \/>\n            renvoie faux\u00a0;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    Private final static Map beanInfoCache = new HashMap();<\/p>\n<p>    \/**<br \/>\n     * Renvoie un PropertyDescriptor qui contient des informations sur l&#039;objet &quot;objet&quot;.<br \/>\n     * Objet @param<br \/>\n     * @retour<br \/>\n     * @throws IntrospectionException<br \/>\n     *\/<br \/>\n    public static PropertyDescriptor[] getPropertyDescriptors (objet Object)<br \/>\n            lance IntrospectionException {<\/p>\n<p>        BeanInfo beanInfo = (BeanInfo) beanInfoCache.get(object.getClass());<br \/>\n        si (beanInfo == null) {<br \/>\n            beanInfo = Introspector.getBeanInfo(object.getClass());<br \/>\n            beanInfoCache.put(object.getClass(), beanInfo);<br \/>\n        }<br \/>\n        \/\/ BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());<br \/>\n        return beanInfo.getPropertyDescriptors();<br \/>\n    }<\/p>\n<p>    \/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u00ab\u00a0M\u00e9thode priv\u00e9e ci-dessous\u00a0\u00bb<br \/>\n    \/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n    \/**<br \/>\n     * Recherchez la m\u00e9thode d&#039;accesseur pour l&#039;argument fieldName bas\u00e9e sur PropertyDescriptor.<br \/>\n     * @param EnsureObject Objet \u00e0 ex\u00e9cuter<br \/>\n     * @param fieldName nom du champ<br \/>\n     * @param type M\u00e9thode Getter \u21d2 GET M\u00e9thode Getter \u21d2 SET<br \/>\n     * Objet de m\u00e9thode @return qui correspond aux conditions d&#039;argument sp\u00e9cifi\u00e9es<br \/>\n     * @throws NoSuchMethodException Si aucune m\u00e9thode correspondante n&#039;est trouv\u00e9e,<br \/>\n     * Ou si le nom est \u00ab &quot; ou &quot; \u00bb<br \/>\n     * dans le cas d<br \/>\n     * @throws IntrospectionException<br \/>\n     *\/<br \/>\n    M\u00e9thode statique priv\u00e9e searchMethod (Object EnsureObject, String fieldName,<br \/>\n            Type de cha\u00eene) lance NoSuchMethodException, IntrospectionException {<br \/>\n        M\u00e9thode m\u00e9thode = null\u00a0;<br \/>\n        fieldName = checkFieldName(fieldName);<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(invokeObject);<br \/>\n        pour (int i = 0; i &lt; props.length; i++) {<br \/>\n            Nom de la cha\u00eene = props[i].getName();<br \/>\n            if (!name.equalsIgnoreCase(fieldName)) {<br \/>\n                continuer;<br \/>\n            }<br \/>\n            if (type.equals(GET)) {<br \/>\n                method = props[i].getReadMethod();<br \/>\n            } autre {<br \/>\n                method = props[i].getWriteMethod();<br \/>\n            }<br \/>\n            si (m\u00e9thode == null) {<br \/>\n                continuer;<br \/>\n            }<br \/>\n            m\u00e9thode de retour\u00a0;<br \/>\n        }<\/p>\n<p>        \/\/ Si la m\u00e9thode n&#039;existe pas.<br \/>\n        lancez une nouvelle NoSuchMethodException (&quot;La classe n&#039;a pas de m\u00e9thodes.&quot;<br \/>\n                + &quot;(Insensible \u00e0 la casse.): &quot; + type.toLowerCase()<br \/>\n                + convString(fieldName, 0, &quot;U&quot;) + &quot;()&quot;);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * V\u00e9rifie si l&#039;argument fieldName est un nom de colonne\u00a0; si c&#039;est un nom de colonne,<br \/>\n     * Reconvertissez.<br \/>\n     *<br \/>\n     * MAIL_ADDRESS \u21d2 MAILADDRESS \u2193 adresse mail = mailAddress<br \/>\n     * @param fieldName nom du champ ou nom de la colonne<br \/>\n     * Nom du champ @return<br \/>\n     *\/<br \/>\n    cha\u00eene statique priv\u00e9e checkFieldName (String fieldName) {<br \/>\n        int index = fieldName.indexOf(&quot;_&quot;);<br \/>\n        tandis que (vrai) {<br \/>\n            si (index == -1) {<br \/>\n                retourner le nom du champ\u00a0;<br \/>\n            }<br \/>\n            StringBuffer convcloumn = new StringBuffer(fieldName);<br \/>\n            convcloumn.deleteCharAt(index);<br \/>\n            fieldName = convcloumn.toString();<br \/>\n            index = fieldName.indexOf(&quot;_&quot;);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Convertit l&#039;objet \u00e0 convertir, objet, en type de convClassName.<br \/>\n     *<br \/>\n     * @param object Objet \u00e0 convertir<br \/>\n     * @param convClassName cha\u00eene de classe du type \u00e0 convertir<br \/>\n     * @renvoie l&#039;objet converti<br \/>\n     *\/<br \/>\n    Objet statique priv\u00e9 convObject (objet Object, String convClassName) {<br \/>\n        si (objet == null) {<br \/>\n            \/\/ Le retour de null lors de la conversion en type primitif entra\u00eenera une erreur.<br \/>\n            \/\/ Faites-en un wrapper pour 0.<br \/>\n            if (convClassName.equals(&quot;int&quot;)) {<br \/>\n                renvoie un nouvel entier (0);<br \/>\n            } else if (convClassName.equals(&quot;long&quot;)) {<br \/>\n                renvoie un nouveau Long(0);<br \/>\n            } autre {<br \/>\n                renvoie null\u00a0;<br \/>\n            }<br \/>\n        }<br \/>\n        if (object.getClass().getName().equals(convClassName)) {<br \/>\n            renvoyer l&#039;objet\u00a0;<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300einstance d&#039;objet de String\u300f<br \/>\n        if (instance d&#039;objet de String) {<br \/>\n            if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                renvoyer l&#039;objet\u00a0;<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.Long&quot;)<br \/>\n                    || convClassName.equals(&quot;long&quot;)) {<br \/>\n                String str = (String) objet\u00a0;<br \/>\n                si (isExist(str)) {<br \/>\n                    \/\/ Ce sera mauvais si vous ne le convertissez pas une fois en BigDecimal<br \/>\n                    \/\/ 1000.00000<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    return new Long(big.longValue());<br \/>\n                } autre {<br \/>\n                    \/\/ Si str est un litt\u00e9ral shell, d\u00e9finissez la valeur initiale sur \u00ab\u00a00\u00a0\u00bb<br \/>\n                    renvoie un nouveau Long(0);<br \/>\n                }<br \/>\n            } sinon if (convClassName.equals(&quot;java.sql.Date&quot;)) {<br \/>\n                retourner \u00e0SqlDate(objet(String));<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                Date date = toSqlDate (objet (String));<br \/>\n                return new Timestamp(date.getTime());<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.Integer&quot;)<br \/>\n                    || convClassName.equals(&quot;int&quot;)) {<br \/>\n                \/\/ Si str est un litt\u00e9ral shell, d\u00e9finissez la valeur initiale sur \u00ab\u00a00\u00a0\u00bb<br \/>\n                String str = (String) objet\u00a0;<br \/>\n                si (isExist(str)) {<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    return new Integer(big.intValue());<br \/>\n                } autre {<br \/>\n                    renvoie un nouvel entier (0);<br \/>\n                }<br \/>\n            } else if (convClassName.equals(&quot;boolean&quot;)) {<br \/>\n                return Boolean.valueOf(object.toString());<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                String temp = ((String) object).trim();<br \/>\n                \/\/ Si temp.length() == 0, il est prudent de le d\u00e9finir sur null au lieu de 0.<br \/>\n                if (temp.length() == 0) {<br \/>\n                    renvoie null\u00a0;<br \/>\n                } autre {<br \/>\n                    renvoie un nouveau BigDecimal(temp);<br \/>\n                }<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u00ab instance d&#039;objet de java.sql.Date \u00bb<br \/>\n        else if (instance d&#039;objet de java.sql.Date) {<\/p>\n<p>            if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                return toStringDate((java.sql.Date) objet, \u00ab aaaa\/MM\/jj \u00bb);<br \/>\n            } sinon if (convClassName.equals(&quot;java.sql.Date&quot;)) {<br \/>\n                renvoyer l&#039;objet\u00a0;<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                return new Timestamp(((Date) object).getTime());<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300einstance d&#039;objet de Timestamp\u300f<br \/>\n        else if (instance d&#039;objet de Timestamp) {<br \/>\n            long time = (objet (horodatage)).getTime();<br \/>\n            if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                return toStringDate (heure, &quot;aaaa\/MM\/jj HH:mm:ss&quot;);<br \/>\n            } sinon if (convClassName.equals(&quot;java.sql.Date&quot;)) {<br \/>\n                renvoie un nouveau java.sql.Date(time);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                renvoyer l&#039;objet\u00a0;<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300einstance d&#039;objet d&#039;Integer\u300f<br \/>\n        else if (instance d&#039;objet d&#039;Integer) {<br \/>\n            if (convClassName.equals(&quot;java.lang.Integer&quot;)<br \/>\n                    || convClassName.equals(&quot;int&quot;)) {<br \/>\n                renvoyer l&#039;objet\u00a0;<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                return object.toString();<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.Long&quot;)<br \/>\n                    || convClassName.equals(&quot;long&quot;)) {<br \/>\n                return new Long(((Integer) object).longValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                return new BigDecimal(((Integer) object).intValue());<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u300einstance d&#039;objet de Long\u300f<br \/>\n        sinon si (instance d&#039;objet de Long) {<br \/>\n            if (convClassName.equals(&quot;java.lang.Long&quot;)<br \/>\n                    || convClassName.equals(&quot;long&quot;)) {<br \/>\n                renvoyer l&#039;objet\u00a0;<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                return object.toString();<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.Integer&quot;)<br \/>\n                    || convClassName.equals(&quot;int&quot;)) {<br \/>\n                return new Integer(((Long) object).intValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                return new BigDecimal(((Long) object).longValue());<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300einstance d&#039;objet de Double\u300f<br \/>\n        sinon si (instance d&#039;objet de Double) {<br \/>\n            if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                \/\/ NUM\u00c9RO DE COLONNE(8,0)<br \/>\n                \/\/ Windows Oracle &gt; BigDecimal<br \/>\n                \/\/ Oracle UNIX &gt; Double<br \/>\n                BigDecimal big = new BigDecimal(((Double) object).doubleValue());<br \/>\n                int \u00e9chelle = big.scale();<br \/>\n                si (\u00e9chelle == 0) {<br \/>\n                    retourner big.toString();<br \/>\n                } autre {<br \/>\n                    \/\/ Non pris en charge si un arrondi est requis.<br \/>\n                    throwNoSupprt(objet, convClassName);<br \/>\n                }<br \/>\n            }<br \/>\n            if (convClassName.equals(&quot;java.lang.Integer&quot;)<br \/>\n                    || convClassName.equals(&quot;int&quot;)) {<br \/>\n                return new Integer(((Double) object).intValue());<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.Long&quot;)<br \/>\n                    || convClassName.equals(&quot;long&quot;)) {<br \/>\n                return new Long(((Double) object).longValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                return new BigDecimal(((Double) object).doubleValue());<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u00ab instance d&#039;objet de BigDecimal \u00bb<br \/>\n        else if (instance d&#039;objet de BigDecimal) {<br \/>\n            if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                return object.toString();<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.Long&quot;)<br \/>\n                    || convClassName.equals(&quot;long&quot;)) {<br \/>\n                return new Long(((BigDecimal) object).longValue());<br \/>\n            } sinon if (convClassName.equals(&quot;java.lang.Integer&quot;)<br \/>\n                    || convClassName.equals(&quot;int&quot;)) {<br \/>\n                return new Integer(((BigDecimal) object).intValue());<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300einstance d&#039;objet d&#039;octet[]\u300f<br \/>\n        sinon si (objet instanceof byte[]) {<br \/>\n            if (convClassName.equals(&quot;java.sql.Blob&quot;)) {<br \/>\n                renvoyer l&#039;objet\u00a0;<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u00ab\u00a0l&#039;objet est bool\u00e9en\u00a0\u00bb<br \/>\n        else if (instance d&#039;objet de Boolean) {<br \/>\n            if (convClassName.equals(&quot;boolean&quot;)) {<br \/>\n                renvoyer l&#039;objet\u00a0;<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300el&#039;objet est bool\u00e9en[]\u300f<br \/>\n        else if (instance d&#039;objet de boolean[]) {<br \/>\n            if (convClassName.equals(&quot;java.lang.String&quot;)) {<br \/>\n                boolean[] bs = (boolean[]) objet\u00a0;<br \/>\n                StringBufferbuff = new StringBuffer(&quot;[&quot;);<br \/>\n                pour (int i = 0; i &lt; bs.length; i++) {<br \/>\n                    buff.append(bs[i] + \u00ab\u00a0\u00bb);<br \/>\n                }<br \/>\n                buff.deleteCharAt(buff.length() \u2013 1);<br \/>\n                buff.append(&quot;]&quot;);<br \/>\n                return buff.toString();<br \/>\n            }<br \/>\n            throwNoSupprt(objet, convClassName);<br \/>\n        }<br \/>\n        throwNoSupprt(objet, convClassName);<br \/>\n        renvoie null\u00a0;<\/p>\n<p>    }<\/p>\n<p>    \/**<br \/>\n     *Lance si la conversion n&#039;est pas prise en charge.<br \/>\n     *<br \/>\n     * @param object Objet \u00e0 convertir<br \/>\n     * @param convClassName Type \u00e0 convertir<br \/>\n     *\/<br \/>\n    private static void throwNoSupprt (objet Object, String convClassName) {<br \/>\n        String className = (object != null) ? object.getClass().getName()<br \/>\n                : &quot;nul&quot;;<br \/>\n        String errorMess = &quot;\\nLe traitement de conversion de type pour cet objet n&#039;est pas encore pris en charge.\\n&quot;<br \/>\n                + \u201d [ Objet ] = \u201d + objet + \u201c,[ Type d\u2019objet ] = \u201d + nom de classe<br \/>\n                + \u00ab ,[ convertClass ] = \u00bb + convClassName + \u00ab \u00bb ;<br \/>\n        lancer une nouvelle UnsupportedOperationException (errorMess);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Convertit le caract\u00e8re \u00e0 la position [index] de la cha\u00eene [str] en majuscule ou minuscule.<br \/>\n     * &lt;p&gt;<br \/>\n     * @param str Cha\u00eene \u00e0 \u00e9valuer<br \/>\n     * @param index Position sp\u00e9cifi\u00e9e<br \/>\n     * @param toCase Convertir en majuscules \u21d2 U | u Convertir en minuscules \u21d2 L | l<br \/>\n     * @return String apr\u00e8s conversion<br \/>\n     *\/<br \/>\n    cha\u00eene statique priv\u00e9e convString (String str, int index, String toCase) {<br \/>\n        if (str == null || str.trim().length() == 0) {<br \/>\n            return str;<br \/>\n        } autre {<br \/>\n            String temp = str.substring(index, index + 1);<br \/>\n            if (toCase.equalsIgnoreCase(&quot;u&quot;)) {<br \/>\n                temp = temp.toUpperCase();<br \/>\n            } autre {<br \/>\n                temp = temp.toLowerCase();<br \/>\n            }<br \/>\n            StringBuffer tempBuffer = new StringBuffer(str);<br \/>\n            tempBuffer.replace(index, index + 1, temp);<br \/>\n            return tempBuffer.toString();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * V\u00e9rifiez si [valeur] est une valeur valide.<br \/>\n     *<br \/>\n     * @param value Cha\u00eene \u00e0 \u00e9valuer<br \/>\n     * @return [true]\u00a0: Si non nul et non &quot;\u00a0\u00bb<br \/>\n     *\/<br \/>\n    isExist bool\u00e9en statique priv\u00e9 (valeur de cha\u00eene) {<br \/>\n        if (value != null &amp;&amp; value.length() != 0) {<br \/>\n            renvoie vrai\u00a0;<br \/>\n        }<br \/>\n        renvoie faux\u00a0;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Classe java.util.Date ou sa sous-classe au format sp\u00e9cifi\u00e9<br \/>\n     * Convertir en cha\u00eene.<br \/>\n     * @param date classe java.util.Date \u00e0 convertir<br \/>\n     * Format sp\u00e9cifi\u00e9 par le mod\u00e8le @param<br \/>\n     * Cha\u00eene de date au format @return<br \/>\n     *\/<br \/>\n    cha\u00eene statique priv\u00e9e toStringDate (Date date, mod\u00e8le de cha\u00eene) {<br \/>\n        SimpleDateFormat sdFormat = new SimpleDateFormat(motif);<br \/>\n        return sdFormat.format(date);<br \/>\n    }<\/p>\n<p>    java.sql.Date statique priv\u00e9 toSqlDate (String strDate) {<br \/>\n        Calendrier cal = toCalendar(strDate);<br \/>\n        retourner \u00e0SqlDate(cal);<br \/>\n    }<\/p>\n<p>    java.sql.Date statique priv\u00e9 toSqlDate (calendrier) {<br \/>\n        long l = cal.getTime().getTime();<br \/>\n        renvoie un nouveau java.sql.Date(l);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Convertit une valeur de temps longue en cha\u00eene au format sp\u00e9cifi\u00e9.<br \/>\n     * @param time Une valeur longue repr\u00e9sentant les millisecondes de l&#039;heure actuelle.<br \/>\n     * Format sp\u00e9cifi\u00e9 par le mod\u00e8le @param<br \/>\n     * Cha\u00eene de date au format @return<br \/>\n     *\/<br \/>\n    cha\u00eene statique priv\u00e9e toStringDate (longtemps, mod\u00e8le de cha\u00eene) {<br \/>\n        return toStringDate (nouvelle date (heure), mod\u00e8le);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Cha\u00eene \u21d2 java.sql.Date<br \/>\n     *<br \/>\n     * Convertissez la cha\u00eene de date suivante en java.sql.Date<br \/>\n     * aaaa\/MM\/jj HH:mm:ss.SSS aaaa-MM-jj HH:mm:ss.SSS<br \/>\n     *<br \/>\n     * &#8220;20030407&#8221; &#8220;2003\/04\/07&#8221; &#8220;2003-04-07&#8221; &#8220;2003\/04\/07 15:20:16&#8221; &#8220;2003-04-07<br \/>\n     * 15:20:16&#8221;<br \/>\n     * @param strDate<br \/>\n     * @retour<br \/>\n     *\/<br \/>\n    Calendrier statique priv\u00e9 toCalendar (String strDate) {<br \/>\n        strDate = format(strDate);<br \/>\n        Calendrier cal = Calendrier.getInstance();<\/p>\n<p>        int aaaa = Integer.parseInt(strDate.substring(0, 4));<br \/>\n        int MM = Integer.parseInt(strDate.substring(5, 7));<br \/>\n        int dd = Integer.parseInt(strDate.substring(8, 10));<br \/>\n        int HH = cal.get(Calendar.HOUR_OF_DAY);<br \/>\n        int mm = cal.get(Calendar.MINUTE);<br \/>\n        int ss = cal.get(Calendar.SECOND);<br \/>\n        int SSS = cal.get(Calendar.MILLISECOND);<\/p>\n<p>        cal.clear();<br \/>\n        cal.set (aaaa, MM \u2013 1, jj);<\/p>\n<p>        int len = strDate.length();<br \/>\n        commutateur (len) {<br \/>\n        cas 10\u00a0:<br \/>\n            casser;<br \/>\n        cas 16\u00a0: \/\/ aaaa\/MM\/jj HH:mm<br \/>\n            HH = Integer.parseInt(strDate.substring(11, 13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14, 16));<br \/>\n            cal.set(Calendar.HOUR_OF_DAY, HH);<br \/>\n            cal.set(Calendrier.MINUTE, mm);<br \/>\n            casser;<br \/>\n        cas 19\u00a0: \/\/ aaaa\/MM\/jj HH:mm:ss<br \/>\n            HH = Integer.parseInt(strDate.substring(11, 13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14, 16));<br \/>\n            ss = Integer.parseInt(strDate.substring(17, 19));<br \/>\n            cal.set(Calendar.HOUR_OF_DAY, HH);<br \/>\n            cal.set(Calendrier.MINUTE, mm);<br \/>\n            cal.set(Calendrier.SECOND, ss);<br \/>\n            casser;<br \/>\n        cas 23\u00a0: \/\/ aaaa\/MM\/jj HH:mm:ss.SSS<br \/>\n            HH = Integer.parseInt(strDate.substring(11, 13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14, 16));<br \/>\n            ss = Integer.parseInt(strDate.substring(17, 19));<br \/>\n            SSS = Integer.parseInt(strDate.substring(20, 23));<br \/>\n            cal.set(Calendar.HOUR_OF_DAY, HH);<br \/>\n            cal.set(Calendrier.MINUTE, mm);<br \/>\n            cal.set(Calendrier.SECOND, ss);<br \/>\n            cal.set(Calendar.MILLISECOND, SSS);<br \/>\n            casser;<br \/>\n        d\u00e9faut:<br \/>\n            lancer une nouvelle IllegalStateException (<br \/>\n                    \u00ab\u00a0Cette cha\u00eene de cha\u00eene ne peut pas \u00eatre convertie en cha\u00eene de date\u00a0:\u00a0\u00bb<br \/>\n                    +strDate);<br \/>\n        }<br \/>\n        retour cal\u00a0;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Toute cha\u00eene de date telle que \u00ab aaaa\/MM\/jj \u00bb ou \u00ab aaaa\/MM\/jj HH:mm:ss \u00bb<br \/>\n     * Tente de convertir au format.<br \/>\n     * Exemple\u00a0: 01\/03 \u21d2 03\/01\/2003<br \/>\n     * @param strDate<br \/>\n     * @retour<br \/>\n     *\/<br \/>\n    format de cha\u00eene statique priv\u00e9 (String strDate) {<br \/>\n        strDate = strDate.trim();<br \/>\n        Cha\u00eene aaaa = null\u00a0;<br \/>\n        Cha\u00eene MM = nul\u00a0;<br \/>\n        Cha\u00eene dd = null\u00a0;<br \/>\n        Cha\u00eene HH = nulle\u00a0;<br \/>\n        Cha\u00eene mm = nul\u00a0;<br \/>\n        Cha\u00eene ss = null\u00a0;<br \/>\n        Cha\u00eene SSS = nul\u00a0;<\/p>\n<p>        \/\/ S&#039;il manque &quot;-&quot; ou &quot;\/&quot;<br \/>\n        if (strDate.indexOf(\u201c\/\u201d) == -1 &amp;&amp; strDate.indexOf(\u201c-\u201c) == -1) {<br \/>\n            si (strDate.length() == 8) {<br \/>\n                aaaa = strDate.substring(0, 4);<br \/>\n                MM = strDate.substring(4, 6);<br \/>\n                jj = strDate.substring(6, 8);<br \/>\n                retourner aaaa + \u00ab\/\u00bb + MM + \u00ab\/\u00bb + jj\u00a0;<br \/>\n            } autre {<br \/>\n                aaaa = strDate.substring(0, 4);<br \/>\n                MM = strDate.substring(4, 6);<br \/>\n                jj = strDate.substring(6, 8);<br \/>\n                HH = strDate.substring(9, 11);<br \/>\n                mm = strDate.substring(12, 14);<br \/>\n                ss = strDate.substring(15, 17);<br \/>\n                retourner aaaa + \u00ab \/ \u00bb + MM + \u00ab \/ \u00bb + jj + \u00ab \u00bb + HH + \u00ab : \u00bb + mm + \u00ab : \u00bb<br \/>\n                        +ss;<br \/>\n            }<br \/>\n        }<br \/>\n        Jeton StringTokenizer = new StringTokenizer(strDate, \u00ab _\/-:. \u00ab );<br \/>\n        R\u00e9sultat StringBuffer = new StringBuffer();<br \/>\n        pour (int i = 0; token.hasMoreTokens(); i++) {<br \/>\n            String temp = token.nextToken();<br \/>\n            commutateur (i) {<br \/>\n            cas 0:\/\/ ann\u00e9e partie<br \/>\n                aaaa = fillString(strDate, temp, &quot;f&quot;, &quot;20&quot;, 4);<br \/>\n                result.append (aaaa);<br \/>\n                casser;<br \/>\n            cas 1:\/\/ partie du mois<br \/>\n                MM = fillString(strDate, temp, &quot;f&quot;, &quot;0&quot;, 2);<br \/>\n                result.append(&quot;\/&quot; + MM);<br \/>\n                casser;<br \/>\n            cas 2:\/\/ partie journ\u00e9e<br \/>\n                dd = fillString(strDate, temp, &quot;f&quot;, &quot;0&quot;, 2);<br \/>\n                result.append(&quot;\/&quot; + dd);<br \/>\n                casser;<br \/>\n            cas 3:\/\/ temps partiel<br \/>\n                HH = fillString(strDate, temp, &quot;f&quot;, &quot;0&quot;, 2);<br \/>\n                result.append(&quot; &quot; + HH);<br \/>\n                casser;<br \/>\n            cas 4:\/\/ partie minute<br \/>\n                mm = fillString(strDate, temp, &quot;f&quot;, &quot;0&quot;, 2);<br \/>\n                result.append(\u201c:\u201d + mm);<br \/>\n                casser;<br \/>\n            cas 5:\/\/ deuxi\u00e8me partie<br \/>\n                ss = fillString(strDate, temp, &quot;f&quot;, &quot;0&quot;, 2);<br \/>\n                result.append(\u201c:\u201d + ss);<br \/>\n                casser;<br \/>\n            cas 6:\/\/ partie milliseconde<br \/>\n                SSS = fillString(strDate, temp, &quot;b&quot;, &quot;0&quot;, 3);<br \/>\n                result.append(&quot;.&quot; + SSS);<br \/>\n                casser;<br \/>\n            }<br \/>\n        }<br \/>\n        return result.toString();<br \/>\n    }<\/p>\n<p>    cha\u00eene statique priv\u00e9e fillString (String strDate, String str,<br \/>\n            Position de la cha\u00eene, String addStr, int len) {<\/p>\n<p>        si (str.length() &gt; len) {<br \/>\n            String mes = strDate + \u00ab Cette cha\u00eene String ne peut pas \u00eatre convertie en cha\u00eene de date \u00bb ;<br \/>\n            lancer une nouvelle IllegalStateException(mes);<br \/>\n        }<br \/>\n        return fillString(str, position, addStr, len);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ajoutez la cha\u00eene [addStr] \u00e0 ajouter \u00e0 la cha\u00eene [str] \u00e0 [position] dans [len]<br \/>\n     * Ins\u00e9rez jusqu&#039;\u00e0 ce qu&#039;il soit plein.<br \/>\n     * &lt;p&gt;<br \/>\n     * Exemple\u00a0: String ss = StringUtil.fillString(&quot;aaa&quot;, &quot;b&quot;, &quot;0\u2033,7); ss \u21d2 &quot;aaa0000&quot;<br \/>\n     *<br \/>\n     * *fillString() s&#039;ins\u00e8re jusqu&#039;\u00e0 ce que len soit rempli, mais addString() ins\u00e8re len.<br \/>\n     *<br \/>\n     * @param str cha\u00eene cible<br \/>\n     * @param position Ins\u00e9rer avant \u21d2 F\/f Ins\u00e9rer apr\u00e8s \u21d2 B\/b<br \/>\n     * @param addStr Cha\u00eene \u00e0 ins\u00e9rer<br \/>\n     * @param len Nombre de chiffres \u00e0 reconstituer<br \/>\n     * @return La cha\u00eene apr\u00e8s conversion. [str] est nul ou un litt\u00e9ral vide, [addStr] est d\u00e9fini sur [len]<br \/>\n     * Renvoie les r\u00e9sultats ins\u00e9r\u00e9s jusqu&#039;\u00e0 ce qu&#039;ils soient satisfaits.<br \/>\n     *\/<br \/>\n    cha\u00eene statique priv\u00e9e fillString (String str, position de la cha\u00eene,<br \/>\n            Cha\u00eene addStr, int len) {<br \/>\n        StringBuffer tempBuffer = null\u00a0;<br \/>\n        si (!isExist(str)) {<br \/>\n            tempBuffer = nouveau StringBuffer();<br \/>\n            pour (int je = 0; je &lt; len; i++) {<br \/>\n                tempBuffer.append(addStr);<br \/>\n            }<br \/>\n            return tempBuffer.toString();<br \/>\n        } sinon if (str.length() != len) {<br \/>\n            tempBuffer = nouveau StringBuffer(str);<br \/>\n            while (len &gt; tempBuffer.length()) {<br \/>\n                if (position.equalsIgnoreCase(&quot;f&quot;)) {<br \/>\n                    tempBuffer.insert(0, addStr);<br \/>\n                } autre {<br \/>\n                    tempBuffer.append(addStr);<br \/>\n                }<br \/>\n            }<br \/>\n            return tempBuffer.toString();<br \/>\n        }<br \/>\n        return str;<br \/>\n    }<\/p>\n<p>}<br \/>\n<\/textarea><\/p>","protected":false},"excerpt":{"rendered":"<p>La r\u00e9flexion Java simplifi\u00e9e Pr\u00e9sentation d&#039;une classe utilitaire qui vous permet d&#039;utiliser facilement l&#039;API de r\u00e9flexion Java [\u2026]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/917"}],"collection":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/comments?post=917"}],"version-history":[{"count":6,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/917\/revisions"}],"predecessor-version":[{"id":1896,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/917\/revisions\/1896"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/media?parent=917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/categories?post=917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/tags?post=917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}