suchen
HeimJavajavaLernprogrammJava-Reflection-Anwendung

Java-Reflection-Anwendung

Sep 27, 2019 pm 04:10 PM
java

Reflexion

Java-Reflection-Anwendung

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!

Stellungnahme
Dieser Artikel ist reproduziert unter:CSDN. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

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.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

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.

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

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

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

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]

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

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

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

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

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version