Apache Commons의 BeanUtils 및 BeanUtils 和 Spring 的 BeanUtils 都有提供 copyProperties 方法,作用是将一个对象的属性的值赋值给另外一个对象,但前提是两个对象的属性类型且 名字 相同。
比如使用 Apache Commons 的 BeanUtils:
import java.math.BigDecimal;
import org.apache.commons.beanutils.BeanUtils;
public class TestBeanUtils {
public static void main(String[] args) throws Exception {
ChartData src = new ChartData(1, BigDecimal.valueOf(123));
DataBean dest = new DataBean();
BeanUtils.copyProperties(dest, src);
System.out.println(src);
System.out.println(dest);
}
public static class DataBean {
private int time;
private BigDecimal result;
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public BigDecimal getResult() {
return result;
}
public void setResult(BigDecimal result) {
this.result = result;
}
@Override
public String toString() {
return "DataBean{" + "time=" + time + ", result=" + result + '}';
}
}
public static class ChartData {
private Integer time;
private BigDecimal result;
public ChartData(Integer time, BigDecimal result) {
this.time = time;
this.result = result;
}
public Integer getTime() {
return time;
}
public BigDecimal getResult() {
return result;
}
public void setTime(Integer time) {
this.time = time;
}
public void setResult(BigDecimal result) {
this.result = result;
}
@Override
public String toString() {
return "ChartData{" + "time=" + time + ", result=" + result + '}';
}
}
}
所以如果 ChartData 和 DataBeanSpring
의 BeanUtils는 모두 copyProperties를 제공합니다. code> 메소드는 한 객체의 속성 값을 다른 객체에 할당하는 데 사용되지만, 두 객체의 속성 유형과
name
은 동일하다는 전제가 있습니다. #🎜🎜#
#🎜🎜#예를 들어 Apache Commons의 BeanUtils를 사용하세요. #🎜🎜#
으아아아
#🎜🎜# #🎜🎜#
#🎜🎜#그래서 ChartData와 DataBean의 속성 이름이 동일하다면 코드는 다음과 같이 작성할 수 있습니다. (각 속성에 대해 setter 메소드를 작성할 필요가 없습니다.) ): #🎜🎜#
으아아아
#🎜🎜# 물론 한 가지 주목할 점은 이것이 리플렉션을 사용하여 구현된다는 점입니다. 이는 setter 메서드를 직접 작성하는 것보다 효율성이 떨어집니다. #🎜🎜#
Apache Commons의
BeanUtils
및BeanUtils
和 Spring 的BeanUtils
都有提供copyProperties
方法,作用是将一个对象的属性的值赋值给另外一个对象,但前提是两个对象的属性类型且 名字 相同。比如使用 Apache Commons 的
BeanUtils
:所以如果
의ChartData
和DataBean
SpringBeanUtils
는 모두copyProperties
를 제공합니다. code> 메소드는 한 객체의 속성 값을 다른 객체에 할당하는 데 사용되지만, 두 객체의 속성 유형과name
은 동일하다는 전제가 있습니다. #🎜🎜# #🎜🎜#예를 들어 Apache Commons의BeanUtils
를 사용하세요. #🎜🎜# 으아아아 #🎜🎜# #🎜🎜# #🎜🎜#그래서ChartData
와DataBean
의 속성 이름이 동일하다면 코드는 다음과 같이 작성할 수 있습니다. (각 속성에 대해 setter 메소드를 작성할 필요가 없습니다.) ): #🎜🎜# 으아아아 #🎜🎜# 물론 한 가지 주목할 점은 이것이 리플렉션을 사용하여 구현된다는 점입니다. 이는 setter 메서드를 직접 작성하는 것보다 효율성이 떨어집니다. #🎜🎜#으아악
강제 이전은 상위 클래스에서 하위 클래스로만 가능합니다. 각 필드를 클릭하여 설정하세요.
원본 포스터는 Java 유형 변환을 배워야 합니다. 이러한 조건에서는 강제 이전이 불가능합니다.