>  기사  >  Java  >  Java 객체 복사 예제에 대한 자세한 설명

Java 객체 복사 예제에 대한 자세한 설명

Y2J
Y2J원래의
2017-04-26 10:03:142086검색

이 글은 Java 객체 복제에 대한 자세한 분석 및 소개입니다. 필요하신 분들은 참고하시면 됩니다.

Java 자체적으로 java.lang에 clone 메소드가 있습니다. 객체 클래스: 이 메소드는 보호된 메소드이며, 서브클래스는 이를 공개 유형으로 선언해야 합니다. 일반적으로 clone()은 기본 메소드입니다. , 네이티브 메소드의 효율성은 Java의 비네이티브 메소드보다 훨씬 높습니다. 성능에 더 관심이 있다면 이 방법을 먼저 고려하십시오. 인터넷에는 이런 종류의 복사 사례가 많이 있으므로 생략하겠습니다. 여기서는 자세히 다루지 않습니다. 여기서 사용할 또 다른 방법은 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;}

이 메서드는 두 개의 매개 변수를 받습니다. 하나는 복사할 원본 객체이고, 다른 하나는 복사할 대상 객체입니다. 물론 이 방법은 서로 다른 두 객체 간에도 사용할 수 있습니다. 대상 개체와 개체에 동일한 유형과 이름의 속성이 하나 이상 있는 경우 원본 개체의 속성 값이 대상 개체의 속성에 할당됩니다.

위 내용은 Java 객체 복사 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.