Javaオブジェクトのコピー例を詳しく解説

Y2J
リリース: 2017-04-26 10:03:14
オリジナル
2094 人が閲覧しました

この記事は Java オブジェクト レプリケーションの詳細な分析と紹介です。必要な方は参照してください。

Java 自体には、オブジェクトをコピーする機能が備わっています。 protected メソッドであるため、サブクラスはこのメソッドをオーバーライドしてパブリック型として宣言する必要があり、また、オブジェクトをコピーする機能を提供する Cloneable インターフェイスを実装する必要があります。Clone() はネイティブ メソッドであり、ネイティブ メソッドの効率は次のとおりです。一般に、非ネイティブのメソッドよりもはるかに高いため、パフォーマンスを重視する場合は、この種のコピーの例がインターネット上にたくさんあるため、これについては詳しく説明しません。ここで使用されるメソッドは、Java のリフレクション メカニズムを通じてオブジェクトをコピーすることです。このメソッドは clone() よりも効率が低い可能性があり、ディープ コピーやコレクション型のコピーはサポートされていませんが、汎用性は大幅に向上します。コピー用のコード:


コードは次のとおりです:

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;}
ログイン後にコピー

このメソッドは 2 つのパラメータを受け取ります。1 つはコピーのソース オブジェクト (コピーされるオブジェクト)、もう 1 つはコピーのターゲット オブジェクトです。もちろん、このメソッドは 2 つの異なるオブジェクト間でも使用できます。この場合、ターゲット オブジェクトとオブジェクトに同じタイプと名前のプロパティが 1 つ以上ある限り、ソースのプロパティ値が使用されます。オブジェクトはターゲット オブジェクトのプロパティに割り当てられます。

以上がJavaオブジェクトのコピー例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート