Maison > Java > javaDidacticiel > Explication détaillée d'exemples de copie d'objets Java

Explication détaillée d'exemples de copie d'objets Java

Y2J
Libérer: 2017-04-26 10:03:14
original
2117 Les gens l'ont consulté

Cet article est une analyse détaillée et une introduction à la réplication d'objets Java. Les amis qui en ont besoin peuvent s'y référer

Java lui-même offre la possibilité de copier des objets. Il existe une méthode de clonage dans java.lang. Classe d'objet. Cette méthode est une méthode protégée. Les sous-classes doivent remplacer cette méthode et la déclarer comme un type public. Elles doivent également implémenter l'interface Cloneable pour offrir la possibilité de copier des objets. , l'efficacité des méthodes natives est bien supérieure à celle des méthodes non natives en Java. Si vous êtes plus préoccupé par les performances, considérez d'abord cette méthode. Il existe de nombreux exemples de ce type de copie sur Internet, donc je vais le faire. Je n'entrerai pas dans les détails ici. Une autre méthode à utiliser ici consiste à utiliser Java. Le mécanisme de réflexion copie les objets. Cette méthode peut être moins efficace que clone() et ne prend pas en charge la copie approfondie et la copie des types de collections, mais sa polyvalence sera grande. amélioré Voici le code à copier :

Le code est le suivant :

private <T> T getBean(T TargetBean, T SourceBean) {        if (TargetBean== null) return null;        Field[] tFields = TargetBean.getClass().getDeclaredFields();        Field[] sFields = SourceBean.getClass().getDeclaredFields();        try {            for (Field field : tFields ) {                String fieldName = field.getName();                if (fieldName.equals("serialVersionUID")) continue;                if (field.getType() == Map.class) continue;
                if (field.getType() == Set.class) continue;
                if (field.getType() == List.class) continue;                for (Field sField : sFields) {                    if(!sField .getName().equals(fieldName)){                        continue;                    }                    Class type = field.getType();                    String setName = getSetMethodName(fieldName);                    Method tMethod = TargetBean.getClass().getMethod(setName, new Class[]{type});                    String getName = getGetMethodName(fieldName);                    Method sMethod = SourceBean.getClass().getMethod(getName, null);                    Object setterValue = voMethod.invoke(SourceBean, null);                    tMethod.invoke(TargetBean, new Object[]{setterValue});                }            }        } catch (Exception e) {            throw new Exception("设置参数信息发生异常", e);        }        return TargetBean;}
Copier après la connexion

Cette méthode en reçoit deux. Paramètres, l'un est l'objet source à copier - l'objet à copier, et l'autre est l'objet cible à copier ——Copie d'objet bien sûr, cette méthode peut également être utilisée entre deux objets différents. , tant que l'objet cible et l'objet ont un ou plusieurs attributs du même type et du même nom, les valeurs d'attribut de l'objet source seront attribuées aux propriétés de l'objet cible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal