Reflexion
Verwenden Sie die JAVA-Reaktion, um eine Unterkonvertierung zwischen zwei Vos mit demselben Feldnamen durchzuführen :
@Test public void doTransTest() { A a= new A(); A.setC(111L); B b= new B(); doTrans(a, b); } /** *@param sour 来源vo *@param dest 待转换vo */ public void doTrans(Object sour, Object dest) { if (sour == null) { dest = null; return; } //反射原理应用 Class<?> sourceClass = sour.getClass(); Class<?> destClass = dest.getClass(); for (Field field : sourceClass.getDeclaredFields()) { String fieldName = field.getName(); Object value; if (fieldName.equals("serialVersionUID")) { continue; } try { PropertyDescriptor propertyDescriptor = new PropertyDescriptor(fieldName, sourceClass); value = propertyDescriptor.getReadMethod().invoke(sour); } catch (Exception e) { //log continue; } if (value == null) { continue; } try { PropertyDescriptor propertyDescriptor = new PropertyDescriptor(fieldName, destClass); propertyDescriptor.getWriteMethod().invoke(dest, value); } catch (Exception e) { //log continue; } } }
Anwendung der SpringIOC-Reflexion:
/** * springIOC和反射test * * @throws Exception */ @Test public void reflexTest() throws Exception { /** * 第一步,springIOC解析如下bean * <bean id="cartBean" class="com.mmall.pojo.Cart"></bean> */ //解析bean字符串xxxxx String beanId = "cartBean"; String beanClass = "com.mmall.pojo.Cart"; Class<?> cls = Class.forName(beanClass); Object object = cls.newInstance(); //模拟spring容器 Map container = Maps.newHashMap(); //bean注入spring容器,实例化成功 container.put(beanId, object); /** * 第二步:模拟ref注入 * <bean id="cartBean" class="com.mmall.pojo.Cart"></bean> * <property name="user" ref="userBean"></property> * <bean> */ //初始化refBean(userBean) String beanIdUser = "cartBean"; String beanClassUser = "com.mmall.pojo.User"; Class<?> clsUser = Class.forName(beanClassUser); Object objectUser = clsUser.newInstance(); //并注入spring容器 container.put(beanIdUser,objectUser); //得到cartBean的setUser方法 String setUserName = "setUser"; Object paramBean = container.get(beanIdUser); //cls是cart对象 Method setter = cls.getMethod(setUserName, objectUser.getClass()); //注入set方法 setter.invoke(object, paramBean); }
Das obige ist der detaillierte Inhalt vonJava-Reflection-Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Dreamweaver Mac
Visuelle Webentwicklungstools

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version