[Java] Reflash-Werte für alle Elemente in BeanClass

Häufige Methode, die häufig bei der Arbeit vor verwendet wurde ```java Anrufer.java { return (GetChangeAddressDialogInfoOutDto) CommonUtil.refreshServOutDto(serviceOutDto); }

■CommonUtil.java /** *ServiceOutDto erneut ausführen
* (String Type : Null -> Blank) * * @param bean * @return Object */ public static Object refreshServOutDto(Object bean) { if (bean != null) { return refreshServOutDto(bean, StringUtils.EMPTY); } return bean; }

/**
 *ServiceOutDto erneut ausführen
 * 
 * @param bean
 * @param defaultStr
 * @return Object
 */
@SuppressWarnings({"rawtypes", "unchecked"})
public static Object refreshServOutDto(Object bean, String defaultStr) {
    if (bean != null) {
        Map bMap = new BeanMap(bean);
        HashMap hMap = new HashMap(bMap);
        hMap.remove("class");
        Iterator itr = hMap.keySet().iterator();
        while (itr.hasNext()) {
            String propNm = (String) itr.next();
            reSetter(bean, propNm, defaultStr);
        }
    }
    return bean;
}

/**
 *Konvertieren Sie Null in Leer
 * 
 * @param bean
 * @param propNm
 * @param defaultStr
 */
@SuppressWarnings("rawtypes")
public static <T> void reSetter(Object bean, String propNm, String defaultStr) {
    //Bereiten Sie einen Deskriptor vor
    PropertyDescriptor nameProp;
    try {
        nameProp = new PropertyDescriptor(propNm, bean.getClass());
        //Erwerb einer besseren Methode
        Method nameGetter = nameProp.getReadMethod();
        Object nowVal = nameGetter.invoke(bean, (Object[]) null);

        //Setter-Methode abrufen
        Method nameSetter = nameProp.getWriteMethod();
        String PropType = nameProp.getPropertyType().toString();
        if (PropType.endsWith("java.util.List")) {
            //Array
            if (nowVal == null) {
                nameSetter.invoke(bean, (List) new ArrayList());
            }
        } else if (PropType.endsWith("java.lang.String")) {
            //String
            String tmpStr = (String) nowVal;
            tmpStr = StringUtils.defaultIfEmpty(((String) nowVal), defaultStr);
            // "null"/"NULL"/"Null"Wenn, konvertieren
            if (Objects.equal(tmpStr.toLowerCase(), "null")) {
                tmpStr = defaultStr;
            }
            nameSetter.invoke(bean, tmpStr);
        } else if (PropType.endsWith("int")) {
            // int

        } else if (PropType.endsWith("java.lang.Number")) {
            // Number

        } else if (PropType.endsWith("boolean")) {
            // boolean

        } else if (PropType.endsWith("java.util.Date")) {
            // Date

        } else if (PropType.matches(".*com\\.smbc_card\\.credit\\.compass\\.service\\.dto\\..+")) {
            // Java Bean Class (ex.Adresse etc.)
            if (nowVal == null) {
                nameSetter.invoke(    bean,
                                    refreshServOutDto(getClassForName(
                                                                        PropType.replaceFirst(    "class ",
                                                                                                StringUtils.EMPTY))
                                        .newInstance()));
            }
        }
    } catch (IntrospectionException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
        | InstantiationException | ClassNotFoundException e) {
        System.out.println("Abnormale Informationen:" + e);
    }
}

/**
 * getClassForName
 * 
 * @param className
 * @return Class<T>
 * @throws ClassNotFoundException
 */
@SuppressWarnings("unchecked")
public static <T> Class<T> getClassForName(String className) throws ClassNotFoundException {
    return (Class<T>) Class.forName(className);
}


Recommended Posts

[Java] Reflash-Werte für alle Elemente in BeanClass
Alle gleichen Hash-Code-Zeichenfolgen in Java
Partisierung in Java
Änderungen in Java 11
Janken in Java
Umfangsrate in Java
FizzBuzz in Java
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Azure funktioniert in Java
Formatieren Sie XML in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Abrufen von Gebietsschemaobjekten für alle in Java verfügbaren Gebietsschemas
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Versuchen Sie es mit RocksDB mit Java
Lesen Sie Binärdateien in Java 1
Vermeiden Sie den Fehler, den Yuma in Java gemacht hat
Holen Sie sich EXIF-Informationen in Java
[Neta] Sleep Sort in Java
Bearbeiten von ini in Java: ini4j
Java-Geschichte in dieser Welt
Segfo Java in 6 Zeilen
Versuchen Sie, JavaScript in Java aufzurufen
Lassen Sie uns Spresense mit Java entwickeln (1)
Probieren Sie den Funktionstyp in Java aus! ①
Ich habe ein Roulette in Java gemacht.
Implementierung der zweistufigen Authentifizierung in Java
Refactoring: Machen Sie Blackjack in Java
Schreiben Sie Flyway-Rückrufe in Java
Themenanalyse (LDA) in Java
Importieren Sie Excel-Daten mit Java 2
NEologd-Vorverarbeitung in Java neologdn-java