{"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\/de\/blog\/java\/reflektieren-util","title":{"rendered":"Java-Reflektion leicht gemacht"},"content":{"rendered":"<h2 class=\"common_title\">Java-Reflektion leicht gemacht<\/h2>\n<p>\n<strong>Java<\/strong>von<strong>Betrachtung<\/strong>Einf\u00fchrung einer Dienstprogrammklasse, die Ihnen die einfache Verwendung der API erm\u00f6glicht.\n<\/p>\n<h2 class=\"common_title\"><a name=\"1\">Was ist Reflexion?<\/a><\/h2>\n<p>\n<strong>Reflection-API<\/strong>Z\u00e4hne,&quot;<strong>java.lang.reflect<\/strong>\u201d im Paket enthalten,<br \/>\nDabei handelt es sich um eine API, die Informationen wie Felder und Methoden aus Java-Klassen abruft.<br \/>\nDie folgenden Klassen werden haupts\u00e4chlich verwendet.\n<\/p>\n<ul>\n<li><strong>java.lang.Class<\/strong><\/li>\n<li><strong>java.lang.reflect.Constructor<\/strong><\/li>\n<li><strong>java.lang.reflect.Method<\/strong><\/li>\n<li><strong>java.lang.reflect.Field<\/strong><\/li>\n<\/ul>\n<p>\n<strong>Betrachtung<\/strong>Mithilfe von k\u00f6nnen Sie Klassen erstellen oder Methoden aufrufen, ohne diese direkt codieren zu m\u00fcssen.<br \/>\nSie k\u00f6nnen eine Klasseninstanz aus einem String erstellen oder eine Methode ausf\u00fchren.<\/p>\n<p>Indem Sie die Definitionen von Klassennamen und Methodennamen in externe Dateien wie XML schreiben, k\u00f6nnen Sie die Anwendung w\u00e4hrend der Laufzeit dynamisch an \u00c4nderungen in der Umgebung anpassen.<br \/>\nEs ist auch eine sehr effektive API zum Erstellen hochflexibler Anwendungen.\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\">Zweck der Reflexion<\/a><\/h2>\n<p>\n<strong>Betrachtung<\/strong>wird nicht oft direkt von Benutzern verwendet,<br \/>\nEs wird h\u00e4ufig in Webanwendungen wie Struts und Frameworks wie O\/R-Mapping verwendet.<br \/>\n<br \/>\nWenn Sie beispielsweise Web-Bildschirmeingabedaten automatisch auf JavaBeans-Eigenschaften festlegen,<br \/>\nEs wird bei der Ausgabe von SQL verwendet, das basierend auf JavaBeans-Eigenschaften automatisch aktualisiert wird.<\/p>\n<p>Dar\u00fcber hinaus stehen Funktionen wie das dynamische Laden und Registrieren von Plug-Ins zur Verf\u00fcgung, die die Funktionalit\u00e4t beim Start der Anwendung erweitern.<strong>Betrachtung<\/strong>Dies l\u00e4sst sich ganz einfach mit erreichen.\n<\/p>\n<h2 class=\"common_title\"><a name=\"3\">Ausf\u00fchren der Probe<\/a><\/h2>\n<p>\nBitte f\u00fchren Sie das Beispiel aus und erleben Sie die Framework-\u00e4hnliche Programmierung.<br \/>\n<br \/>\nHier verwenden wir die folgende Klasse<strong>Betrachtung<\/strong>Demonstriert eine einfache Verwendung des Dienstprogramms.<br \/>\n<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/Main.txt\" target=\"_blank\"><strong>Main.java<\/strong><\/a>...Klasse, die ausgef\u00fchrt werden soll<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/BeanUtil.txt\" target=\"_blank\"><strong>BeanUtil.java<\/strong><\/a>...Reflection-Dienstprogrammklasse<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/FreeSoft.txt\" target=\"_blank\"><strong>FreeSoft.java<\/strong><\/a>...Wird als Reflexion in einer Klasse verwendet, die freie Software repr\u00e4sentiert.<\/p>\n<p><strong>\u25cfBei normaler Ausf\u00fchrung<\/strong>\n<\/p>\n<div class=\"point\">\nSystem.out.println(<span style=\"color: #0000FF;\">\u201e\uff1e\uff1e\uff1eNormalfall\u201c<\/span>); <br \/>\nFreeSoft freeSoft = new FreeSoft(); <br \/>\nfreeSoft.setName<span style=\"color: #0000FF;\">(\u201eChat&amp;Messenger Chat und Messenger!!\u201c<\/span>); <br \/>\nfreeSoft.showName(); <br \/>\nfreeSoft.showPrice(0);\n<\/div>\n<p>\n<strong>\u25cfBei Ausf\u00fchrung mit Reflexion<\/strong><\/p>\n<div class=\"point\">\nSystem.out.println<span style=\"color: #0000FF;\">(\u201e\uff1e\uff1e\uff1eBei Verwendung von Reflexion\u201c<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/Erstelle eine Instanz der FreeSoft-Klasse <\/span><br \/>\nObjekt invokeObject = BeanUtil.newInstance<span style=\"color: #0000FF;\">(\u201eFreeSoft\u201c<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/Legen Sie den Wert im Namensfeld fest. <\/span><br \/>\nBeanUtil.setProperty(invokeObject, <span style=\"color: #0000FF;\">&quot;Name&quot;<\/span> , <span style=\"color: #0000FF;\">\u201eChat&amp;Messenger Chat und Messenger!!\u201c<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ F\u00fchre die showName()-Methode von FreeSoft aus. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">&quot;Name anzeigen&quot;<\/span>, Null); <br \/>\n<span style=\"color: #00CC33;\">\/\/ F\u00fchre die showPrice()-Methode von FreeSoft aus. <\/span><br \/>\n<span style=\"color: #00CC33;\">\/\/ Wenn die Methode Argumente hat, m\u00fcssen diese als Array vom Typ Object \u00fcbergeben werden. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">\u201eshowPrice\u201c<\/span>,new Object[]{new Integer(0)});\n<\/div>\n\n<p><strong>\u25cfAusf\u00fchrungsergebnisse<\/strong><br \/>\n<br \/>Die Ausf\u00fchrungsergebnisse sind im Normalfall und bei Verwendung von Reflektion gleich.<\/p>\n<div class=\"console\">\n&gt;&gt;&gt; Normalfall<br \/>\n<br \/>Name der Software: Chat&amp;Messenger Chat und Messenger! !<br \/>\n<br \/>Preis: 0 Yen<\/p>\n<p>&gt;&gt;&gt; Bei Verwendung von Reflexion<br \/>\n<br \/>Name der Software: Chat&amp;Messenger Chat und Messenger! !<br \/>\n<br \/>Preis: 0 Yen\n<\/div>\n\n<h2 class=\"common_title\"><a name=\"4\">Details zur BeanUtil-Methode<\/a><\/h2>\n<p><a name=\"newInstance(String)\"><!-- --><\/a><\/p>\n<h2>\nneueInstanz<\/h2>\n<pre>\u00f6ffentliches statisches Objekt <b>neueInstanz<\/b>(String className) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>Erzeugt eine Instanz aus der Zeichenfolge \u201eclassName\u201c und gibt sie zur\u00fcck.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Klassenname<\/code> \u2013 Vollqualifizierter Klassenname\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>Eine neue Instanz eines vollst\u00e4ndig qualifizierten Klassennamens\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nneueInstanz<\/h2>\n<pre>\u00f6ffentliches statisches Objekt <b>neueInstanz<\/b>(String className, Object[] argObj) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>Erzeugt eine Instanz aus der Zeichenfolge \u201eclassName\u201c und gibt sie zur\u00fcck.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Klassenname<\/code> \u2013 Vollqualifizierter Klassenname<\/dd>\n<dd><code>argObj<\/code> \u2013 Konstruktorargumente\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>Eine neue Instanz eines vollst\u00e4ndig qualifizierten Klassennamens\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class)\"><!-- --><\/a><\/p>\n<h2>\nneueInstanz<\/h2>\n<pre>\u00f6ffentliches statisches Objekt <b>neueInstanz<\/b>(Klasse clazz) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>Erzeugt eine Instanz der Klasse \u201eclazz\u201c und gibt sie zur\u00fcck.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Clazz<\/code> - Klasse\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>Neue Instanz von Clazz\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class, Object[])\"><!-- --><\/a><\/p>\n<h2>\nneueInstanz<\/h2>\n<pre>\u00f6ffentliches statisches Objekt <b>neueInstanz<\/b>(Klasse clazz, Object[] argObj) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>Erzeugt eine Instanz der Klasse \u201eclazz\u201c und gibt sie zur\u00fcck.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Clazz<\/code> - Klasse<\/dd>\n<dd><code>argObj<\/code> \u2013 Konstruktorargumente\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>Neue Instanz von Clazz\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/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>\u00f6ffentliche statische Leere <b>setProperty<\/b>(Object invokeObject, String fieldName, Object value) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>Rufen Sie die Setter-Methode des Feldes \u201efieldName\u201c des Objekts \u201einvokeObject\u201c auf und speichern Sie den Wert \u201evalue\u201c.<\/p>\n<p> Wenn es keine Setter-Methode gibt, wird der Wert direkt auf das Feld gesetzt. In diesem Fall muss der Zugriffsmodifikator der Zieleigenschaft jedoch \u00f6ffentlich sein.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 Auszuf\u00fchrendes Objekt<\/dd>\n<dd><code>Feldname<\/code> \u2013 Eigenschaftsname des auszuf\u00fchrenden Objekts<\/dd>\n<dd><code>Wert<\/code> \u2013 Wert, der eingestellt werden soll\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/code> \u2013 Die folgende Ausnahme tritt auf.\n<\/dd>\n<dd><code>InvocationTargetException<\/code> \u2013 Wenn die zugrunde liegende Methode eine Ausnahme ausl\u00f6st\n<\/dd>\n<dd><code>IllegalAccessException<\/code> \u2013 Dieses Methodenobjekt ist Java<br \/>\n             Wenn die Sprachzugriffskontrolle implementiert ist und auf die zugrunde liegende Methode nicht zugegriffen werden kann\n<\/dd>\n<dd><code>NoSuchMethodException<\/code> \u2013 Wenn eine Methode mit dem angegebenen Namen nicht gefunden wird<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getProperty(Object, String)\"><!-- --><\/a><\/p>\n<h2>\ngetProperty<\/h2>\n<pre>\u00f6ffentliches statisches Objekt <b>getProperty<\/b>(Objekt invokeObject, String fieldName) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>Ruft die Getter-Methode des Felds fieldName des Objekts invokeObject auf, um den Wert abzurufen.<br \/>\n Wenn keine Getter-Methode vorhanden ist, wird der Wert direkt aus dem Feld abgerufen. In diesem Fall muss der Zugriffsmodifikator der Zieleigenschaft jedoch \u00f6ffentlich sein.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 Auszuf\u00fchrendes Objekt<\/dd>\n<dd><code>Feldname<\/code> \u2013 Eigenschaftsname des auszuf\u00fchrenden Objekts\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>R\u00fcckgabewert der Getter-Methode\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/code> \u2013 Die folgende Ausnahme tritt auf.\n<\/dd>\n<dd><code>InvocationTargetException<\/code> \u2013 Wenn die zugrunde liegende Methode eine Ausnahme ausl\u00f6st\n<\/dd>\n<dd><code>IllegalAccessException<\/code> \u2013 Dieses Methodenobjekt ist Java<br \/>\n             Wenn die Sprachzugriffskontrolle implementiert ist und auf die zugrunde liegende Methode nicht zugegriffen werden kann\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 Wenn ein Feld mit dem angegebenen Namen nicht gefunden wird<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"invoke(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\naufrufen<\/h2>\n<pre>\u00f6ffentliches statisches Objekt <b>aufrufen<\/b>(Objekt invokeObject, String callMethod, Object[] argObjects) l\u00f6st InvocationTargetException, IllegalAccessException, NoSuchMethodException aus<\/pre>\n<dl>\n<dd>F\u00fchrt die Methode \u201ecallMethod\u201c des Objekts \u201einvokeObject\u201c aus.<br \/>\n Wenn ein R\u00fcckgabewert vorhanden ist, kann dieser als Objekt abgerufen werden.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 Auszuf\u00fchrendes Objekt<\/dd>\n<dd><code>callMethod<\/code> \u2013 Name der auszuf\u00fchrenden Methode<\/dd>\n<dd><code>argObjects<\/code> \u2013 Wenn Argumente vorhanden sind, \u00fcbergeben Sie diese als Array von Objekten. Wenn keine Argumente vorhanden sind, \u00fcbergeben Sie null.\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>R\u00fcckgabewert der Ausf\u00fchrung von \u201ecallMethod\u201c\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>InvocationTargetException<\/code> \u2013 Wenn die zugrunde liegende Methode eine Ausnahme ausl\u00f6st\n<\/dd>\n<dd><code>IllegalAccessException<\/code> \u2013 Dieses Methodenobjekt ist Java<br \/>\n             Wenn die Sprachzugriffskontrolle implementiert ist und auf die zugrunde liegende Methode nicht zugegriffen werden kann\n<\/dd>\n<dd><code>NoSuchMethodException<\/code> \u2013 Wenn eine Methode mit dem angegebenen Namen nicht gefunden wird<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"findMethod(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nfindMethod<\/h2>\n<pre>\u00f6ffentliche statische Methode <b>findMethod<\/b>(Objekt invokeObject, String callMethod, Object[] argObjects) l\u00f6st eine NoSuchMethodException aus<\/pre>\n<dl>\n<dd>Suchen Sie nach der Methode \u201ecallMethod\u201c des Objekts \u201einvokeObject\u201c.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 Auszuf\u00fchrendes Objekt<\/dd>\n<dd><code>callMethod<\/code> \u2013 Methodenname des auszuf\u00fchrenden Objekts<\/dd>\n<dd><code>argObjects<\/code> \u2013 Wenn Argumente vorhanden sind, \u00fcbergeben Sie diese als Array von Objekten. Wenn keine Argumente vorhanden sind, \u00fcbergeben Sie null.\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>Ein Methodenobjekt, das den angegebenen Argumentbedingungen entspricht\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>NoSuchMethodException<\/code> \u2013 Wenn keine passende Methode gefunden wird oder der Name \u201e\u201c oder \u201e\u201c lautet<\/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>\u00f6ffentliche statische Leere <b>setField<\/b>(Object invokeObject, String fieldName, Object value) l\u00f6st IllegalAccessException, NoSuchFieldException aus<\/pre>\n<dl>\n<dd>Speichert den Wert \u201evalue\u201c im Feldnamen \u201efieldName\u201c des auszuf\u00fchrenden Objekts \u201einvokeObject\u201c.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 Auszuf\u00fchrendes Objekt<\/dd>\n<dd><code>Feldname<\/code> \u2013 Feldname des auszuf\u00fchrenden Objekts<\/dd>\n<dd><code>Wert<\/code> \u2013 Wert, der eingestellt werden soll\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>IllegalAccessException<\/code> \u2013 Das Feld, auf dem das angegebene Objekt basiert (oder seine Unterklasse oder sein Implementierer)<br \/>\n             keine Instanz der Klasse oder Schnittstelle ist, die sie deklariert, oder wenn die Entpackungskonvertierung fehlschl\u00e4gt\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 Wenn ein Feld mit dem angegebenen Namen nicht gefunden wird<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\ngetField<\/h2>\n<pre>\u00f6ffentliches statisches Objekt <b>getField<\/b>(Objekt invokeObject, String fieldName) l\u00f6st IllegalAccessException, NoSuchFieldException aus<\/pre>\n<dl>\n<dd>Ruft den Wert des Feldnamens \u201efieldName\u201c des auszuf\u00fchrenden Objekts \u201einvokeObject\u201c ab.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 Auszuf\u00fchrendes Objekt<\/dd>\n<dd><code>Feldname<\/code> \u2013 Feldname des auszuf\u00fchrenden Objekts\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>R\u00fcckgabewert\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>IllegalAccessException<\/code> \u2013 Das Feld, auf dem das angegebene Objekt basiert (oder seine Unterklasse oder sein Implementierer)<br \/>\n             keine Instanz der Klasse oder Schnittstelle ist, die sie deklariert, oder wenn die Entpackungskonvertierung fehlschl\u00e4gt\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 Wenn ein Feld mit dem angegebenen Namen nicht gefunden wird<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"hasField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\nhasField<\/h2>\n<pre>\u00f6ffentlicher statischer boolescher Wert <b>hasField<\/b>(Objektobjekt, String Feldname) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>Pr\u00fcft, ob das Objekt \u201eobject\u201c den Feldnamen \u201efieldName\u201c deklariert.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Objekt<\/code> \u2013 Zu pr\u00fcfendes Objekt<\/dd>\n<dd><code>Feldname<\/code> \u2013 Zu \u00fcberpr\u00fcfender Feldname\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>wahr, wenn deklariert\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getAllFields(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetAllFields<\/h2>\n<pre>\u00f6ffentliches statisches java.util.TreeSet <b>getAllFields<\/b>(Objektobjekt) l\u00f6st eine Ausnahme aus<\/pre>\n<dl>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Objekt<\/code> &#8211;\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>Ausnahme:<\/b>\n<\/dt>\n<dd><code>Ausnahme<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getShortClassName(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetShortClassName<\/h2>\n<pre>\u00f6ffentlicher statischer String <b>getShortClassName<\/b>(Objektobjekt)<\/pre>\n<dl>\n<dd>Ruft den unqualifizierten Klassennamen von einem Objekt ab.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Objekt<\/code> &#8211;\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/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>\u00f6ffentlicher statischer String <b>getShortClassName<\/b>(String-Klassenname)<\/pre>\n<dl>\n<dd>Ruft den Klassennamen aus dem vollst\u00e4ndig qualifizierten Namen ab.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Klassenname<\/code> &#8211;\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/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>\u00f6ffentlicher statischer String <b>getFieldName<\/b>(String methodName)<\/pre>\n<dl>\n<dd>\u00c4ndern Sie den Feldnamen vom Methodennamen. Muss den JavaBeans-Konventionen entsprechen.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Methodenname<\/code> &#8211;\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"isClassExist(String)\"><!-- --><\/a><\/p>\n<h2>\nisClassExist<\/h2>\n<pre>\u00f6ffentlicher statischer boolescher Wert <b>isClassExist<\/b>(String-Klassenname)<\/pre>\n<dl>\n<dd>\u00dcberpr\u00fcft, ob der vollst\u00e4ndig qualifizierte Name \u201eclassName\u201c ein vorhandener Klassenname ist.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Klassenname<\/code> &#8211;\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/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>\u00f6ffentlicher statischer PropertyDescriptor[] <b>getPropertyDescriptors<\/b>(Objektobjekt) l\u00f6st eine IntrospectionException aus<\/pre>\n<dl>\n<dd>Gibt einen PropertyDescriptor zur\u00fcck, der Objektinformationen f\u00fcr \u201eobject\u201c enth\u00e4lt.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Parameter:<\/b><\/dt>\n<dd><code>Objekt<\/code> &#8211;\n<\/dd>\n<dt><b>R\u00fcckgabewert:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>Ausnahme:<\/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\">BeanUtil-Quellcode<\/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 * Utility-Klasse, die Ihnen die einfache Verwendung der Reflection-API von Java erm\u00f6glicht<br \/>\n *\/<br \/>\n\u00f6ffentliche Klasse BeanUtil {<\/p>\n<p>    \/**   *\/<br \/>\n    privater statischer finaler String GET = \u201eGET\u201c;<br \/>\n    \/**   *\/<br \/>\n    privater statischer finaler String SET = \u201eSET\u201c;<\/p>\n<p>    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300enewInstance\u300f<br \/>\n    \/**<br \/>\n     * Erzeugt eine Instanz aus der Zeichenfolge \u201eclassName\u201c und gibt sie zur\u00fcck.<br \/>\n     * @param className vollst\u00e4ndig qualifizierter Klassenname<br \/>\n     * @return neue Instanz des vollst\u00e4ndig qualifizierten Klassennamens<br \/>\n     * @throws-Ausnahme<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches Objekt newInstance(String className) l\u00f6st eine Ausnahme aus {<br \/>\n        versuchen {<br \/>\n            return Class.forName(className).newInstance();<br \/>\n        } Catch (NoClassDefFoundError e) {<br \/>\n            System.err.println(\u201cNoClassDefFoundError: \u201d + className);<br \/>\n            wirf e;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Erzeugt eine Instanz aus der Zeichenfolge \u201eclassName\u201c und gibt sie zur\u00fcck.<br \/>\n     * @param className vollst\u00e4ndig qualifizierter Klassenname<br \/>\n     * @param argObj-Konstruktorargument<br \/>\n     * @return neue Instanz des vollst\u00e4ndig qualifizierten Klassennamens<br \/>\n     * @throws-Ausnahme<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches Objekt newInstance(String className, Object[] argObj)<br \/>\n            wirft eine Ausnahme {<br \/>\n        Class[] argClass = new Class[argObj.length];<br \/>\n        for (int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        Konstruktor c = Class.forName(className).getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Erstellen Sie eine Instanz der Klasse \u201eclazz\u201c und geben Sie sie zur\u00fcck.<br \/>\n     * @param Clazz-Klasse<br \/>\n     * @return neue Instanz von clazz<br \/>\n     * @throws-Ausnahme<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches Objekt newInstance(Klasse clazz) l\u00f6st eine Ausnahme aus {<br \/>\n        return clazz.newInstance();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Erstellen Sie eine Instanz der Klasse \u201eclazz\u201c und geben Sie sie zur\u00fcck.<br \/>\n     * @param Clazz-Klasse<br \/>\n     * @param argObj-Konstruktorargument<br \/>\n     * @return neue Instanz von clazz<br \/>\n     * @throws-Ausnahme<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches Objekt newInstance(Klasse clazz, Object[] argObj)<br \/>\n            wirft eine Ausnahme {<br \/>\n        Class[] argClass = new Class[argObj.length];<br \/>\n        for (int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        Konstruktor c = clazz.getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/\/ ---------------------&quot;Methode&quot;<br \/>\n    \/**<br \/>\n     * Setter-Methode des Felds \u201efieldName\u201c des Objekts \u201einvokeObject\u201c<br \/>\n     * Aufruf, Wert &#039;Wert&#039; speichern.<br \/>\n     * &lt;br&gt;<br \/>\n     * Wenn es keine Setter-Methode gibt, legen Sie den Wert direkt auf das Feld fest.<br \/>\n     * In diesem Fall muss der Zugriffsmodifikator der Zieleigenschaft jedoch \u00f6ffentlich sein.<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param fieldName Eigenschaftsname des auszuf\u00fchrenden Objekts<br \/>\n     * @param value Wert, der eingestellt werden soll<br \/>\n     * @throws Ausnahme Die folgende Ausnahme tritt auf.<br \/>\n     * @throws InvocationTargetException, wenn die zugrunde liegende Methode eine Ausnahme ausl\u00f6st<br \/>\n     * @throws IllegalAccessException Wenn dieses Methodenobjekt Java ist<br \/>\n     * Wenn die Sprachzugriffskontrolle implementiert ist und auf die zugrunde liegende Methode nicht zugegriffen werden kann<br \/>\n     * @throws NoSuchMethodException, wenn eine Methode mit dem angegebenen Namen nicht gefunden wird<br \/>\n     *\/<br \/>\n    public static void setProperty(Object invokeObject, String fieldName,<br \/>\n            Objektwert) l\u00f6st eine Ausnahme aus {<br \/>\n        versuchen {<br \/>\n            Methode method = searchMethod(invokeObject, fieldName, SET);<br \/>\n            Class[] paramClasses = method.getParameterTypes();<br \/>\n            Object[] valueArray = null;<br \/>\n            if (paramClasses[0].isInstance(value)) {<br \/>\n                \/\/Nicht konvertieren, wenn das festzulegende Objekt eine Unterklasse der Argumentklasse ist.<br \/>\n                valueArray = neues Objekt[] { Wert };<br \/>\n            } anders {<br \/>\n                valueArray = neues Objekt[] { convObject(value, paramClasses[0]<br \/>\n                        .getName()) };<br \/>\n            }<br \/>\n            method.invoke(invokeObject, valueArray);<br \/>\n        } Catch (NoSuchMethodException e) {<br \/>\n            versuchen {<br \/>\n                \/\/ Wenn keine Setter-Methode vorhanden ist, legen Sie sie direkt auf das Feld fest.<br \/>\n                setField(invokeObject, fieldName, value);<br \/>\n            } Catch (NoSuchFieldException fe) {<br \/>\n                String errorMes = \u201e\\nClass\u201c + getShortClassName(invokeObject)<br \/>\n                        + \u201eist\u201c + \u201ef\u00fcr Feld \u201e\u201c + Feldname + \u201e\u201c\\n\u201c<br \/>\n                        + \u201eEs gibt keine zug\u00e4ngliche Setter-Methode und.\u201c<br \/>\n                        + \u201eFeld \u201e\u201c + Feldname<br \/>\n                        + \u201e\u201c ist ebenfalls nicht \u00f6ffentlich. \u201d + \u201e\u201c;<br \/>\n                throw new IllegalAccessException(errorMes);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Getter-Methode des Feldes fieldName des Objekts invokeObject<br \/>\n     * Holen Sie sich den Anrufwert. &lt;br&gt;<br \/>\n     * Wenn keine Getter-Methode vorhanden ist, wird der Wert direkt aus dem Feld abgerufen.<br \/>\n     * In diesem Fall muss der Zugriffsmodifikator der Zieleigenschaft jedoch \u00f6ffentlich sein.<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param fieldName Eigenschaftsname des auszuf\u00fchrenden Objekts<br \/>\n     * @return R\u00fcckgabewert der Getter-Methode<br \/>\n     * @throws Ausnahme Die folgende Ausnahme tritt auf.<br \/>\n     * @throws InvocationTargetException, wenn die zugrunde liegende Methode eine Ausnahme ausl\u00f6st<br \/>\n     * @throws IllegalAccessException Wenn dieses Methodenobjekt Java ist<br \/>\n     * Wenn die Sprachzugriffskontrolle implementiert ist und auf die zugrunde liegende Methode nicht zugegriffen werden kann<br \/>\n     * @throws NoSuchFieldException, wenn ein Feld mit dem angegebenen Namen nicht gefunden wird<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches Objekt getProperty(Object invokeObject, String fieldName)<br \/>\n            wirft eine Ausnahme {<br \/>\n        versuchen {<br \/>\n            Methode method = 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     * F\u00fchrt die Methode \u201ecallMethod\u201c des Objekts \u201einvokeObject\u201c aus.<br \/>\n     * Wenn ein R\u00fcckgabewert vorhanden ist, kann dieser als Objekttyp abgerufen werden.<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param callMethod Methodenname, der ausgef\u00fchrt werden soll<br \/>\n     * @param argObjects Wenn es ein Argument gibt, \u00fcbergeben Sie es als Array von Objekten.<br \/>\n     * \u00dcbergeben Sie null, wenn kein Argument vorhanden ist.<br \/>\n     * @return R\u00fcckgabewert der Ausf\u00fchrung von \u201ecallMethod\u201c<br \/>\n     * @throws InvocationTargetException, wenn die zugrunde liegende Methode eine Ausnahme ausl\u00f6st<br \/>\n     * @throws IllegalAccessException Wenn dieses Methodenobjekt Java ist<br \/>\n     * Wenn die Sprachzugriffskontrolle implementiert ist und auf die zugrunde liegende Methode nicht zugegriffen werden kann<br \/>\n     * @throws NoSuchMethodException, wenn eine Methode mit dem angegebenen Namen nicht gefunden wird<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches Objekt invoke(Object invokeObject, String callMethod,<br \/>\n            Object[] argObjects) l\u00f6st eine InvocationTargetException aus,<br \/>\n            IllegalAccessException, NoSuchMethodException {<br \/>\n        Methode method = findMethod(invokeObject, callMethod, argObjects);<br \/>\n        return method.invoke(invokeObject, argObjects);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Suchen Sie nach der Methode \u201ecallMethod\u201c des Objekts \u201einvokeObject\u201c.<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param callMethod Methodenname des auszuf\u00fchrenden Objekts<br \/>\n     * @param argObjects Wenn es ein Argument gibt, \u00fcbergeben Sie es als Array von Objekten.<br \/>\n     * \u00dcbergeben Sie null, wenn kein Argument vorhanden ist.<br \/>\n     * @return Methodenobjekt, das den angegebenen Argumentbedingungen entspricht<br \/>\n     * @throws NoSuchMethodException Wenn keine passende Methode gefunden wird,<br \/>\n     * Oder wenn der Name \u201e &quot; oder &quot; &quot;im Fall von<br \/>\n     *\/<br \/>\n    \u00f6ffentliche statische Methode findMethod(Object invokeObject, String callMethod,<br \/>\n            Object[] argObjects) l\u00f6st NoSuchMethodException {<br \/>\n        Class[] paramClasses = null;<br \/>\n        Methode[] Methoden = invokeObject.getClass().getMethods();<br \/>\n        oben: for (int i = 0; i &lt;methods.length; i++) {<br \/>\n            if (methods[i].getName().equals(callMethod)) {<br \/>\n                if (argObjects == null<br \/>\n                        &amp;&amp; methoden[i].getParameterTypes().length == 0) {<br \/>\n                    R\u00fcckgabemethoden[i];<br \/>\n                }<br \/>\n                if (argObjects == null) {<br \/>\n                    weitermachen;<br \/>\n                }<br \/>\n                paramClasses = methoden[i].getParameterTypes();<br \/>\n                if (paramClasses.length == argObjects.length) {<br \/>\n                    \/\/ Alle Parameterlistentypen und Argumenttypen validieren<br \/>\n                    for (int j = 0; j &lt; paramClasses.length; j++) {<br \/>\n                        Klasse paramClass = paramClasses[j];<br \/>\n                        Objekt argObj = argObjects[j];<br \/>\n                        \/\/ Wenn der Argumenttyp primitiv ist, das Argumentobjekt<br \/>\n                        \/\/ ist nicht null und primitiv<br \/>\n                        \/\/Wenn es eine Unterklasse von Number ist, ist es in Ordnung.<br \/>\n                        if (argObj == null) {<br \/>\n                            weitermachen;<br \/>\n                        }<br \/>\n                        if (paramClass.isPrimitive()<br \/>\n                                &amp;&amp; (argObj-Instanz von Number || argObj<br \/>\n                                        .getClass().isPrimitive())) {<br \/>\n                            weitermachen;<br \/>\n                        }<br \/>\n                        if (!paramClass.isInstance(argObj)) {<br \/>\n                            \/\/ Fahren Sie mit der n\u00e4chsten Methode fort, wenn die Typen nicht mit der impliziten Konvertierung kompatibel sind<br \/>\n                            weiter oben;<br \/>\n                        }<br \/>\n                    }<br \/>\n                    R\u00fcckgabemethoden[i];<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        String paramLength = (paramClasses != null) ? Integer<br \/>\n                .toString(paramClasses.length) : \u201e\u201c;<br \/>\n        String errorMes = getShortClassName(invokeObject) + \u201emethod\u201c<br \/>\n                + callMethod + \u201eEs gibt keine.\u201c + \u201e[ paramClasses.length ] = \u201c<br \/>\n                + paramLength + \u201e,[ argObjects.length ] = \u201e + argObjects.length<br \/>\n                + &#8220;&#8221;;<br \/>\n        throw new NoSuchMethodException(errorMes);<br \/>\n    }<\/p>\n<p>    \/\/ ----------------------&quot;Feld&quot;<br \/>\n    \/**<br \/>\n     * Wert f\u00fcr den Feldnamen \u201efieldName\u201c des auszuf\u00fchrenden Objekts \u201einvokeObject\u201c.<br \/>\n     * Speichert \u201eWert\u201c.<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param fieldName Feldname des auszuf\u00fchrenden Objekts<br \/>\n     * @param value Wert, der eingestellt werden soll<br \/>\n     * @throws IllegalAccessException Wenn das angegebene Objekt ist<br \/>\n     * Feld (oder seine Unterklasse oder sein Implementierer)<br \/>\n     * Wenn es sich nicht um eine Instanz einer Klasse oder Schnittstelle handelt, deklarieren Sie es<br \/>\n     * oder wenn die Entpackungskonvertierung fehlschl\u00e4gt<br \/>\n     * @throws NoSuchFieldException, wenn ein Feld mit dem angegebenen Namen nicht gefunden wird<br \/>\n     *\/<br \/>\n    public static void setField(Object invokeObject, String fieldName,<br \/>\n            Objektwert) wirft IllegalAccessException, NoSuchFieldException {<br \/>\n        Feld field = searchField(invokeObject, fieldName);<br \/>\n        String className = field.getType().getName();<br \/>\n        Objekt convObj = null;<br \/>\n        if (field.getType().isInstance(value)) {<br \/>\n            convObj = Wert;<br \/>\n        } anders {<br \/>\n            convObj = convObject(value, className);<br \/>\n        }<br \/>\n        field.set(invokeObject, convObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Setzen Sie den Wert des Feldnamens \u201efieldName\u201c des Ausf\u00fchrungsobjekts \u201einvokeObject\u201c auf<br \/>\n     * Erhalten.<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param fieldName Feldname des auszuf\u00fchrenden Objekts<br \/>\n     * @return R\u00fcckgabewert<br \/>\n     * @throws IllegalAccessException Wenn das angegebene Objekt ist<br \/>\n     * Feld (oder seine Unterklasse oder sein Implementierer)<br \/>\n     * Wenn es sich nicht um eine Instanz einer Klasse oder Schnittstelle handelt, deklarieren Sie es<br \/>\n     * oder wenn die Entpackungskonvertierung fehlschl\u00e4gt<br \/>\n     * @throws NoSuchFieldException, wenn ein Feld mit dem angegebenen Namen nicht gefunden wird<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches Objekt getField(Object invokeObject, String fieldName)<br \/>\n            wirft IllegalAccessException, NoSuchFieldException {<br \/>\n        Feld field = searchField(invokeObject, fieldName);<br \/>\n        return field.get(invokeObject);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Pr\u00fcfen Sie, ob das Objekt \u201eobject\u201c den Feldnamen \u201efieldName\u201c deklariert<br \/>\n     * best\u00e4tigen.<br \/>\n     * @param object Zu untersuchendes Objekt<br \/>\n     * @param fieldName Zu pr\u00fcfender Feldname<br \/>\n     * @return true, wenn deklariert<br \/>\n     * @throws-Ausnahme<br \/>\n     *\/<br \/>\n    public static boolean hasField(Object object, String fieldName)<br \/>\n            wirft eine Ausnahme {<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        for (int i = 0; i &lt; props.length; i++) {<br \/>\n            String _fieldName = props[i].getName();<br \/>\n            if (fieldName.equals(_fieldName)) {<br \/>\n                return true;<br \/>\n            }<br \/>\n        }<br \/>\n        falsch zur\u00fcckgeben;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * @param-Objekt<br \/>\n     * @zur\u00fcckkehren<br \/>\n     * @throws-Ausnahme<br \/>\n     *\/<br \/>\n    \u00f6ffentliches statisches TreeSet getAllFields(Object object) l\u00f6st eine Ausnahme aus {<\/p>\n<p>        TreeSet fieldSet = new TreeSet();<br \/>\n        \/\/ Eigenschaftsnamen von Methode abrufen<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        for (int i = 0; i &lt; props.length; i++) {<br \/>\n            String fieldName = props[i].getName();<br \/>\n            fieldSet.add(fieldName);<\/p>\n<p>        }<\/p>\n<p>        \/\/ Eigenschaftsnamen aus Feld abrufen<br \/>\n        Field[] Felder = object.getClass().getFields();<br \/>\n        for (int i = 0; i &lt; field.length; i++) {<br \/>\n            String fieldName = Felder[i].getName();<br \/>\n            if (!fieldSet.contains(fieldName)) {<br \/>\n                fieldSet.add(fieldName);<br \/>\n            }<br \/>\n        }<br \/>\n        return fieldSet;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param fieldName Feldname des auszuf\u00fchrenden Objekts<br \/>\n     * @return Abgelegte Objekte, die den angegebenen Argumentbedingungen entsprechen<br \/>\n     * @throws NoSuchFieldException, wenn ein Feld mit dem angegebenen Namen nicht gefunden wird<br \/>\n     *\/<br \/>\n    privates statisches Feld searchField(Object invokeObject, String fieldName)<br \/>\n            wirft NoSuchFieldException {<br \/>\n        versuchen {<br \/>\n            return invokeObject.getClass().getField(fieldName);<br \/>\n        } Catch (NoSuchFieldException e) {<br \/>\n            \/\/ Dieser Bereich wird aus dem Namen der Tabellenspalte ermittelt<br \/>\n            fieldName = checkFieldName(fieldName);<br \/>\n            Field[] Felder = invokeObject.getClass().getFields();<br \/>\n            for (int i = 0; i &lt; field.length; i++) {<br \/>\n                if (fields[i].getName().equalsIgnoreCase(fieldName)) {<br \/>\n                    R\u00fcckgabefelder[i];<br \/>\n                }<br \/>\n            }<br \/>\n            throw new NoSuchFieldException(fieldName);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/\/ ----------------------&quot; Andere &quot;<\/p>\n<p>    \/**<br \/>\n     * Rufen Sie den unqualifizierten Klassennamen von einem Objekt ab.<br \/>\n     * @param-Objekt<br \/>\n     * @zur\u00fcckkehren<br \/>\n     *\/<br \/>\n    \u00f6ffentlicher statischer String getShortClassName(Object object) {<br \/>\n        if (object == null) {<br \/>\n            \u201enull\u201c zur\u00fcckgeben;<br \/>\n        }<br \/>\n        String name = object.getClass().getName();<br \/>\n        return getShortClassName(name);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ermitteln Sie den Klassennamen aus dem vollst\u00e4ndig qualifizierten Namen.<br \/>\n     * @param Klassenname<br \/>\n     * @zur\u00fcckkehren<br \/>\n     *\/<br \/>\n    \u00f6ffentlicher statischer String getShortClassName(String className) {<br \/>\n        int index = className.lastIndexOf(\u201c.\u201d);<br \/>\n        return className.substring(index + 1);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \u00c4ndern Sie den Feldnamen vom Methodennamen. Entspricht den JavaBeans-Konventionen<br \/>\n     * wird gebraucht.<br \/>\n     * @param Methodenname<br \/>\n     * @zur\u00fcckkehren<br \/>\n     *\/<br \/>\n    \u00f6ffentlicher statischer String getFieldName(String methodName) {<br \/>\n        String fieldName = null;<br \/>\n        if (methodName.startsWith(\u201cis\u201d)) {<br \/>\n            fieldName = methodName.substring(2);<br \/>\n        } anders {<br \/>\n            fieldName = methodName.substring(3);<br \/>\n        }<br \/>\n        fieldName = convString(fieldName, 0, \u201eL\u201c);<br \/>\n        return fieldName;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Stellen Sie sicher, dass der vollst\u00e4ndig qualifizierte Name \u201eclassName\u201c ein vorhandener Klassenname ist.<br \/>\n     * @param Klassenname<br \/>\n     * @zur\u00fcckkehren<br \/>\n     *\/<br \/>\n    \u00f6ffentlicher statischer boolescher Wert isClassExist(String className) {<br \/>\n        versuchen {<br \/>\n            Class.forName(className);<br \/>\n            return true;<br \/>\n        } Catch (Ausnahme e) {<br \/>\n            falsch zur\u00fcckgeben;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    private final static Map beanInfoCache = new HashMap();<\/p>\n<p>    \/**<br \/>\n     * Gibt einen PropertyDescriptor zur\u00fcck, der Objektinformationen f\u00fcr \u201eobject\u201c enth\u00e4lt.<br \/>\n     * @param-Objekt<br \/>\n     * @zur\u00fcckkehren<br \/>\n     * @throws IntrospectionException<br \/>\n     *\/<br \/>\n    \u00f6ffentlicher statischer PropertyDescriptor[] getPropertyDescriptors(Object-Objekt)<br \/>\n            wirft IntrospectionException {<\/p>\n<p>        BeanInfo beanInfo = (BeanInfo) beanInfoCache.get(object.getClass());<br \/>\n        if (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\u201cPrivate Methode unten\u201c<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     * Suchen Sie nach der Zugriffsmethode f\u00fcr das Argument fieldName basierend auf PropertyDescriptor.<br \/>\n     * @param invokeObject Objekt, das ausgef\u00fchrt werden soll<br \/>\n     * @param fieldName Feldname<br \/>\n     * @param Typ Getter-Methode \u21d2 GET Getter-Methode \u21d2 SET<br \/>\n     * @return Methodenobjekt, das den angegebenen Argumentbedingungen entspricht<br \/>\n     * @throws NoSuchMethodException Wenn keine passende Methode gefunden wird,<br \/>\n     * Oder wenn der Name \u201e &quot; oder &quot; \u201d<br \/>\n     * im Fall von<br \/>\n     * @throws IntrospectionException<br \/>\n     *\/<br \/>\n    private statische Methode searchMethod(Object invokeObject, String fieldName,<br \/>\n            String-Typ) wirft NoSuchMethodException, IntrospectionException {<br \/>\n        Methode method = null;<br \/>\n        fieldName = checkFieldName(fieldName);<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(invokeObject);<br \/>\n        for (int i = 0; i &lt; props.length; i++) {<br \/>\n            String name = props[i].getName();<br \/>\n            if (!name.equalsIgnoreCase(fieldName)) {<br \/>\n                weitermachen;<br \/>\n            }<br \/>\n            if (type.equals(GET)) {<br \/>\n                method = props[i].getReadMethod();<br \/>\n            } anders {<br \/>\n                method = props[i].getWriteMethod();<br \/>\n            }<br \/>\n            if (Methode == null) {<br \/>\n                weitermachen;<br \/>\n            }<br \/>\n            R\u00fcckgabemethode;<br \/>\n        }<\/p>\n<p>        \/\/ Wenn die Methode nicht existiert.<br \/>\n        throw new NoSuchMethodException (\u201eKlasse hat keine Methoden.\u201c<br \/>\n                + \u201e(Gro\u00df-\/Kleinschreibung wird nicht beachtet.):\u201c + type.toLowerCase()<br \/>\n                + convString(fieldName, 0, \u201eU\u201c) + \u201e()\u201c);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \u00dcberpr\u00fcft, ob das Argument fieldName ein Spaltenname ist; wenn es ein Spaltenname ist,<br \/>\n     * Zur\u00fcck konvertieren.<br \/>\n     *<br \/>\n     * MAIL_ADDRESS \u21d2 MAILADDRESS \u2193 mailaddress = mailAddress<br \/>\n     * @param fieldName Feldname oder Spaltenname<br \/>\n     * @return-Feldname<br \/>\n     *\/<br \/>\n    privater statischer String checkFieldName(String fieldName) {<br \/>\n        int index = fieldName.indexOf(\u201c_\u201d);<br \/>\n        while (wahr) {<br \/>\n            if (index == -1) {<br \/>\n                return fieldName;<br \/>\n            }<br \/>\n            StringBuffer convcloumn = new StringBuffer(fieldName);<br \/>\n            convcloumn.deleteCharAt(index);<br \/>\n            fieldName = convcloumn.toString();<br \/>\n            index = fieldName.indexOf(\u201c_\u201d);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Konvertiert das zu konvertierende Objekt object in den Typ convClassName.<br \/>\n     *<br \/>\n     * @param object Zu konvertierendes Objekt<br \/>\n     * @param convClassName Klassenzeichenfolge des zu konvertierenden Typs<br \/>\n     * @return das konvertierte Objekt<br \/>\n     *\/<br \/>\n    privates statisches Objekt convObject(Object object, String convClassName) {<br \/>\n        if (object == null) {<br \/>\n            \/\/ Die R\u00fcckgabe von Null beim Konvertieren in einen primitiven Typ f\u00fchrt zu einem Fehler.<br \/>\n            \/\/ Mach daraus einen Wrapper f\u00fcr 0.<br \/>\n            if (convClassName.equals(\u201cint\u201d)) {<br \/>\n                return new Integer(0);<br \/>\n            } else if (convClassName.equals(\u201clong\u201d)) {<br \/>\n                return new Long(0);<br \/>\n            } anders {<br \/>\n                null zur\u00fcckgeben;<br \/>\n            }<br \/>\n        }<br \/>\n        if (object.getClass().getName().equals(convClassName)) {<br \/>\n            R\u00fcckgabeobjekt;<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eObjektinstanz von String\u300f<br \/>\n        if (Objektinstanz von String) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                R\u00fcckgabeobjekt;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                String str = (String) object;<br \/>\n                if (isExist(str)) {<br \/>\n                    \/\/ Es wird schlecht sein, wenn Sie es nicht einmal in BigDecimal konvertieren<br \/>\n                    \/\/ 1000.00000<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    return new Long(big.longValue());<br \/>\n                } anders {<br \/>\n                    \/\/ Wenn str ein Shell-Literal ist, setze den Anfangswert auf \u201e0\u201c<br \/>\n                    return new Long(0);<br \/>\n                }<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                return toSqlDate((String) object);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                Datum date = toSqlDate((String) object);<br \/>\n                return new Timestamp(date.getTime());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                \/\/ Wenn str ein Shell-Literal ist, setze den Anfangswert auf \u201e0\u201c<br \/>\n                String str = (String) object;<br \/>\n                if (isExist(str)) {<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    return new Integer(big.intValue());<br \/>\n                } anders {<br \/>\n                    return new Integer(0);<br \/>\n                }<br \/>\n            } else if (convClassName.equals(\u201cboolean\u201d)) {<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                \/\/ Wenn temp.length() == 0 ist, kann es sicher auf null statt auf 0 gesetzt werden.<br \/>\n                if (temp.length() == 0) {<br \/>\n                    null zur\u00fcckgeben;<br \/>\n                } anders {<br \/>\n                    return new BigDecimal(temp);<br \/>\n                }<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u201c Objektinstanz von java.sql.Date \u201e<br \/>\n        else if (Objektinstanz von java.sql.Date) {<\/p>\n<p>            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return toStringDate((java.sql.Date) object, \u201eyyyy\/MM\/dd\u201c);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                R\u00fcckgabeobjekt;<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                return new Timestamp(((Date) object).getTime());<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eObjektinstanz des Zeitstempels\u300f<br \/>\n        else if (Objektinstanz des Zeitstempels) {<br \/>\n            long time = ((Timestamp) object).getTime();<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return toStringDate(time, \u201eyyyy\/MM\/dd HH:mm:ss\u201c);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                return new java.sql.Date(time);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                R\u00fcckgabeobjekt;<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eObjektinstanz von Integer\u300f<br \/>\n        else if (Objektinstanz von Integer) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                R\u00fcckgabeobjekt;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<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(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u300eObjektinstanz von Long\u300f<br \/>\n        else if (Objektinstanz von Long) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                R\u00fcckgabeobjekt;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<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(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eObjektinstanz von Double\u300f<br \/>\n        else if (Objektinstanz von Double) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                \/\/ SPALTENNUMMER(8,0)<br \/>\n                \/\/ Windows Oracle &gt; BigDecimal<br \/>\n                \/\/ UNIX-Orakel &gt; Double<br \/>\n                BigDecimal big = new BigDecimal(((Double) object).doubleValue());<br \/>\n                int scale = big.scale();<br \/>\n                if (scale == 0) {<br \/>\n                    return big.toString();<br \/>\n                } anders {<br \/>\n                    \/\/ Wird nicht unterst\u00fctzt, wenn eine Rundung erforderlich ist.<br \/>\n                    throwNoSupprt(object, convClassName);<br \/>\n                }<br \/>\n            }<br \/>\n            if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                return new Integer(((Double) object).intValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<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(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u201c Objektinstanz von BigDecimal \u201e<br \/>\n        else if (Objektinstanz von BigDecimal) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                return new Long(((BigDecimal) object).longValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                return new Integer(((BigDecimal) object).intValue());<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eObjektinstanz von Byte[]\u300f<br \/>\n        else if (Objektinstanz von Byte[]) {<br \/>\n            if (convClassName.equals(\u201cjava.sql.Blob\u201d)) {<br \/>\n                R\u00fcckgabeobjekt;<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u201c Objekt ist boolesch\u201c<br \/>\n        else if (Objektinstanz von Boolean) {<br \/>\n            if (convClassName.equals(\u201cboolean\u201d)) {<br \/>\n                R\u00fcckgabeobjekt;<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eobject is boolean[]\u300f<br \/>\n        else if (Objektinstanz von Boolean[]) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                boolean[] bs = (boolean[]) object;<br \/>\n                StringBuffer buff = new StringBuffer(\u201c[\u201c);<br \/>\n                for (int i = 0; i &lt; bs.length; i++) {<br \/>\n                    buff.append(bs[i] + \u201e\u201c,);<br \/>\n                }<br \/>\n                buff.deleteCharAt(buff.length() \u2013 1);<br \/>\n                buff.append(\u201c]\u201d);<br \/>\n                return buff.toString();<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<br \/>\n        throwNoSupprt(object, convClassName);<br \/>\n        null zur\u00fcckgeben;<\/p>\n<p>    }<\/p>\n<p>    \/**<br \/>\n     *Wird ausgel\u00f6st, wenn die Konvertierung nicht unterst\u00fctzt wird.<br \/>\n     *<br \/>\n     * @param object Zu konvertierendes Objekt<br \/>\n     * @param convClassName Typ zum Konvertieren<br \/>\n     *\/<br \/>\n    private static void throwNoSupprt(Object object, String convClassName) {<br \/>\n        String className = (object != null) ? object.getClass().getName()<br \/>\n                : &quot;Null&quot;;<br \/>\n        String errorMess = \u201e\\nTypkonvertierungsverarbeitung f\u00fcr dieses Objekt wird noch nicht unterst\u00fctzt.\\n\u201c<br \/>\n                + \u201e[ Objekt ] = \u201e + Objekt + \u201e,[ Objekttyp ] = \u201e + Klassenname<br \/>\n                + \u201e,[ konvertierenKlasse ] =\u201c + convClassName + \u201e\u201c;<br \/>\n        throw new UnsupportedOperationException(errorMess);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Konvertiert das Zeichen an Position [index] der Zeichenfolge [str] in Gro\u00df- oder Kleinbuchstaben.<br \/>\n     * &lt;p&gt;<br \/>\n     * @param str String, der ausgewertet werden soll<br \/>\n     * @param index Angegebene Position<br \/>\n     * @param toCase In Gro\u00dfbuchstaben umwandeln \u21d2 U | u In Kleinbuchstaben umwandeln \u21d2 L | l<br \/>\n     * @return String nach der Konvertierung<br \/>\n     *\/<br \/>\n    privater statischer String convString(String str, int index, String toCase) {<br \/>\n        if (str == null || str.trim().length() == 0) {<br \/>\n            return str;<br \/>\n        } anders {<br \/>\n            String temp = str.substring(index, index + 1);<br \/>\n            if (toCase.equalsIgnoreCase(\u201eu\u201c)) {<br \/>\n                temp = temp.toUpperCase();<br \/>\n            } anders {<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     * \u00dcberpr\u00fcfen Sie, ob [Wert] ein g\u00fcltiger Wert ist.<br \/>\n     *<br \/>\n     * @param value String, der ausgewertet werden soll<br \/>\n     * @return [true]: Wenn nicht null und nicht \u201e\u201c<br \/>\n     *\/<br \/>\n    privater statischer boolescher Wert isExist(String value) {<br \/>\n        if (value != null &amp;&amp; value.length() != 0) {<br \/>\n            return true;<br \/>\n        }<br \/>\n        falsch zur\u00fcckgeben;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * java.util.Date-Klasse oder ihre Unterklasse im angegebenen Format<br \/>\n     * In String konvertieren.<br \/>\n     * @param date java.util.Date-Klasse, die konvertiert werden soll<br \/>\n     * @param-Muster angegebenes Format<br \/>\n     * @return-formatierte Datumszeichenfolge<br \/>\n     *\/<br \/>\n    privater statischer String toStringDate(Datumsdatum, Stringmuster) {<br \/>\n        SimpleDateFormat sdFormat = new SimpleDateFormat(pattern);<br \/>\n        return sdFormat.format(date);<br \/>\n    }<\/p>\n<p>    private static java.sql.Date toSqlDate(String strDate) {<br \/>\n        Kalender cal = toCalendar(strDate);<br \/>\n        return toSqlDate(cal);<br \/>\n    }<\/p>\n<p>    private static java.sql.Date toSqlDate(Calendar cal) {<br \/>\n        long l = cal.getTime().getTime();<br \/>\n        return new java.sql.Date(l);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Konvertiert einen Langzeitwert in eine Zeichenfolge im angegebenen Format.<br \/>\n     * @param time Ein langer Wert, der Millisekunden der aktuellen Zeit darstellt.<br \/>\n     * @param-Muster angegebenes Format<br \/>\n     * @return-formatierte Datumszeichenfolge<br \/>\n     *\/<br \/>\n    privater statischer String toStringDate(lange Zeit, String-Muster) {<br \/>\n        return toStringDate(new Date(time), pattern);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * String \u21d2 java.sql.Date<br \/>\n     *<br \/>\n     * Konvertieren Sie die folgende Datumszeichenfolge in java.sql.Date<br \/>\n     * jjjj\/MM\/tt HH:mm:ss.SSS jjjj-MM-tt 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     * @zur\u00fcckkehren<br \/>\n     *\/<br \/>\n    privater statischer Kalender toCalendar(String strDate) {<br \/>\n        strDate = format(strDate);<br \/>\n        Kalender cal = Calendar.getInstance();<\/p>\n<p>        int yyyy = 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(yyyy, MM \u2013 1, dd);<\/p>\n<p>        int len = strDate.length();<br \/>\n        Schalter (len) {<br \/>\n        Fall 10:<br \/>\n            brechen;<br \/>\n        Fall 16: \/\/ jjjj\/MM\/tt 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(Calendar.MINUTE, mm);<br \/>\n            brechen;<br \/>\n        Fall 19: \/\/ jjjj\/MM\/tt 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(Calendar.MINUTE, mm);<br \/>\n            cal.set(Calendar.SECOND, ss);<br \/>\n            brechen;<br \/>\n        Fall 23: \/\/ yyyy\/MM\/dd 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(Calendar.MINUTE, mm);<br \/>\n            cal.set(Calendar.SECOND, ss);<br \/>\n            cal.set(Calendar.MILLISECOND, SSS);<br \/>\n            brechen;<br \/>\n        Standard:<br \/>\n            wirf eine neue IllegalStateException(<br \/>\n                    \u201eDiese Zeichenfolge kann nicht in eine Datumszeichenfolge umgewandelt werden:\u201c<br \/>\n                    + strDate);<br \/>\n        }<br \/>\n        return cal;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Beliebige Datumszeichenfolge als \u201ejjjj\/MM\/tt\u201c oder \u201ejjjj\/MM\/tt HH:mm:ss\u201c<br \/>\n     * Versucht, in ein Format zu konvertieren.<br \/>\n     * Beispiel: 03.01.03 \u21d2 03.01.2003<br \/>\n     * @param strDate<br \/>\n     * @zur\u00fcckkehren<br \/>\n     *\/<br \/>\n    privates statisches String-Format(String strDate) {<br \/>\n        strDate = strDate.trim();<br \/>\n        String yyyy = null;<br \/>\n        Zeichenfolge MM = null;<br \/>\n        String dd = null;<br \/>\n        Zeichenfolge HH = null;<br \/>\n        Zeichenfolge mm = null;<br \/>\n        String ss = null;<br \/>\n        Zeichenfolge SSS = null;<\/p>\n<p>        \/\/ Wenn \u201e-\u201c oder \u201e\/\u201c fehlt<br \/>\n        if (strDate.indexOf(\u201c\/\u201d) == -1 &amp;&amp; strDate.indexOf(\u201c-\u201c) == -1) {<br \/>\n            if (strDate.length() == 8) {<br \/>\n                yyyy = strDate.substring(0, 4);<br \/>\n                MM = strDate.substring(4, 6);<br \/>\n                dd = strDate.substring(6, 8);<br \/>\n                return yyyy + \u201e\/\u201c + MM + \u201e\/\u201c + dd;<br \/>\n            } anders {<br \/>\n                yyyy = strDate.substring(0, 4);<br \/>\n                MM = strDate.substring(4, 6);<br \/>\n                dd = 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                return yyyy + \u201e\/\u201c + MM + \u201e\/\u201c + dd + \u201e \u201e + HH + \u201e:\u201c + mm + \u201e:\u201c<br \/>\n                        +ss;<br \/>\n            }<br \/>\n        }<br \/>\n        StringTokenizer token = new StringTokenizer(strDate, \u201e_\/-:. \u201e);<br \/>\n        StringBuffer result = new StringBuffer();<br \/>\n        for (int i = 0; token.hasMoreTokens(); i++) {<br \/>\n            String temp = token.nextToken();<br \/>\n            Schalter (i) {<br \/>\n            Fall 0:\/\/ Jahresteil<br \/>\n                yyyy = fillString(strDate, temp, \u201ef\u201c, \u201e20\u201c, 4);<br \/>\n                result.append(yyyy);<br \/>\n                brechen;<br \/>\n            Fall 1:\/\/ Monatsteil<br \/>\n                MM = fillString(strDate, temp, \u201ef\u201c, \u201e0\u201c, 2);<br \/>\n                result.append(\u201c\/\u201d + MM);<br \/>\n                brechen;<br \/>\n            Fall 2:\/\/ Tagesteil<br \/>\n                dd = fillString(strDate, temp, \u201ef\u201c, \u201e0\u201c, 2);<br \/>\n                result.append(\u201c\/\u201d + dd);<br \/>\n                brechen;<br \/>\n            Fall 3:\/\/ Zeitteil<br \/>\n                HH = fillString(strDate, temp, \u201ef\u201c, \u201e0\u201c, 2);<br \/>\n                result.append(\u201c \u201d + HH);<br \/>\n                brechen;<br \/>\n            Fall 4:\/\/ Minutenteil<br \/>\n                mm = fillString(strDate, temp, \u201ef\u201c, \u201e0\u201c, 2);<br \/>\n                result.append(\u201c:\u201d + mm);<br \/>\n                brechen;<br \/>\n            Fall 5:\/\/ zweiter Teil<br \/>\n                ss = fillString(strDate, temp, \u201ef\u201c, \u201e0\u201c, 2);<br \/>\n                result.append(\u201c:\u201d + ss);<br \/>\n                brechen;<br \/>\n            Fall 6:\/\/ Millisekundenteil<br \/>\n                SSS = fillString(strDate, temp, \u201eb\u201c, \u201e0\u201c, 3);<br \/>\n                result.append(\u201c.\u201d + SSS);<br \/>\n                brechen;<br \/>\n            }<br \/>\n        }<br \/>\n        return result.toString();<br \/>\n    }<\/p>\n<p>    privater statischer String fillString(String strDate, String str,<br \/>\n            String-Position, String addStr, int len) {<\/p>\n<p>        if (str.length() &gt; len) {<br \/>\n            String mes = strDate + \u201eDieser String-String kann nicht in einen Datums-String konvertiert werden\u201c;<br \/>\n            throw new IllegalStateException(mes);<br \/>\n        }<br \/>\n        return fillString(str, position, addStr, len);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * F\u00fcgen Sie die Zeichenfolge [addStr] hinzu, die zur Zeichenfolge [str] an [Position] in [len] hinzugef\u00fcgt werden soll.<br \/>\n     * Bis zum F\u00fcllen einf\u00fchren.<br \/>\n     * &lt;p&gt;<br \/>\n     * Beispiel: String ss = StringUtil.fillString(\u201eaaa\u201c, \u201eb\u201c, \u201e0\u201c, 7); ss \u21d2 \u201eaaa0000\u201c<br \/>\n     *<br \/>\n     * *fillString() f\u00fcgt ein, bis len gef\u00fcllt ist, aber addString() f\u00fcgt len ein.<br \/>\n     *<br \/>\n     * @param str Zielzeichenfolge<br \/>\n     * @param position Einf\u00fcgen vor \u21d2 F\/f Einf\u00fcgen nach \u21d2 B\/b<br \/>\n     * @param addStr String zum Einf\u00fcgen<br \/>\n     * @param len Anzahl der aufzuf\u00fcllenden Ziffern<br \/>\n     * @return Der String nach der Konvertierung. [str] ist null oder ein leeres Literal, [addStr] ist auf [len] gesetzt.<br \/>\n     * Gibt eingef\u00fcgte Ergebnisse zur\u00fcck, bis sie zufrieden sind.<br \/>\n     *\/<br \/>\n    privater statischer String fillString(String str, String-Position,<br \/>\n            String addStr, int len) {<br \/>\n        StringBuffer tempBuffer = null;<br \/>\n        if (!isExist(str)) {<br \/>\n            tempBuffer = new StringBuffer();<br \/>\n            for (int i = 0; i &lt; len; i++) {<br \/>\n                tempBuffer.append(addStr);<br \/>\n            }<br \/>\n            return tempBuffer.toString();<br \/>\n        } else if (str.length() != len) {<br \/>\n            tempBuffer = new StringBuffer(str);<br \/>\n            while (len &gt; tempBuffer.length()) {<br \/>\n                if (position.equalsIgnoreCase(\u201cf\u201d)) {<br \/>\n                    tempBuffer.insert(0, addStr);<br \/>\n                } anders {<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>Java-Reflexion leicht gemacht Wir stellen eine Utility-Klasse vor, mit der Sie die Java-Reflection-API einfach verwenden k\u00f6nnen [\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\/de\/wp-json\/wp\/v2\/posts\/917"}],"collection":[{"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/comments?post=917"}],"version-history":[{"count":6,"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/posts\/917\/revisions"}],"predecessor-version":[{"id":1896,"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/posts\/917\/revisions\/1896"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/media?parent=917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/categories?post=917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/de\/wp-json\/wp\/v2\/tags?post=917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}