Java 대상 통합, org. springframework. beans. BeanUtils
실제 개발 에서 두 대상 을 하나의 대상 으로 통합 하 는 수요 가 존재 할 수 있다. 전통 적 인 방법 은 당연히 하나의 get 과 set 이지 만 이런 코드 는 매우 불결 하 다. 우 리 는 반 사 를 바탕 으로 이 수 요 를 실현 할 수 있다.다행히 apache 와 spring 은 모두 이 방법 을 제공 합 니 다.
Spring:
public static void copyProperties(Object source, Object target) throws BeansException {
copyProperties(source, target, null, (String[]) null);
}
이 방법 은 target 대상 을 주체 로 하여 source 대상 의 값 을 target 에 부여 합 니 다.기본 값 은 같은 필드 의 모든 값 을 직접 덮어 씁 니 다.
실제 수요 에서 일부 속성 만 복사 하면 우 리 는 이 방법 을 사용 하여 일부 필드 를 무시 할 수 있 습 니 다.
public static void copyProperties(Object source, Object target, String... ignoreProperties) throws BeansException {
copyProperties(source, target, null, ignoreProperties);
}
예: 값 이 있 는 필드 를 무시 하고,
public static String[] getValuePropertyNames (Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set emptyNames = new HashSet<>();
for(java.beans.PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (null != srcValue) emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
이 방법 은 모든 값 이 있 는 방법 을 얻 기 위해 서 이다.물론 구체 적 인 필드 를 직접 지정 할 수도 있다.
apache:
이 방법 은 orig 방법의 값 을 dest 에 부여 하지만 덮어 쓰 는 방법 을 무시 합 니 다.
public static void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException {
BeanUtilsBean.getInstance().copyProperties(dest, orig);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.