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

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

Y2J
Y2Joriginal
2017-04-26 10:03:142086parcourir

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;}

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!

Déclaration:
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