찾다

 >  Q&A  >  본문

java - list<bean>을 다른 bean의 목록으로 변환합니다.

으아악

다음과 유사한 작업이 필요합니다.

으아악

변환할 수 없는 유형을 보고하는 오류, DataBean은 내부 정적 클래스입니다.
C++에는 강제로 변환할 수 있는 reinterpret_cast가 있고, Java에는 해당 메소드가 있어야 합니다

PHP中文网PHP中文网2749일 전1034

모든 응답(4)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-05-17 10:09:31

    Apache CommonsBeanUtilsBeanUtilsSpringBeanUtils 都有提供 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 + '}';
            }
    
        }
    
    }
    


    所以如果 ChartDataDataBeanSpring

    BeanUtils는 모두 copyProperties 메소드는 한 객체의 속성 값을 다른 객체에 할당하는 데 사용되지만, 두 객체의 속성 유형과

    name

    은 동일하다는 전제가 있습니다. #🎜🎜# #🎜🎜#예를 들어 Apache Commons의 BeanUtils를 사용하세요. #🎜🎜# 으아아아 #🎜🎜# #🎜🎜# <시간> #🎜🎜#그래서 ChartDataDataBean의 속성 이름이 동일하다면 코드는 다음과 같이 작성할 수 있습니다. (각 속성에 대해 setter 메소드를 작성할 필요가 없습니다.) ): #🎜🎜# 으아아아 #🎜🎜# 물론 한 가지 주목할 점은 이것이 리플렉션을 사용하여 구현된다는 점입니다. 이는 setter 메서드를 직접 작성하는 것보다 효율성이 떨어집니다. #🎜🎜#

    회신하다
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-17 10:09:31

    으아악

    회신하다
    0
  • 迷茫

    迷茫2017-05-17 10:09:31

    강제 이전은 상위 클래스에서 하위 클래스로만 가능합니다. 각 필드를 클릭하여 설정하세요.

    회신하다
    0
  • 阿神

    阿神2017-05-17 10:09:31

    원본 포스터는 Java 유형 변환을 배워야 합니다. 이러한 조건에서는 강제 이전이 불가능합니다.

    회신하다
    0
  • 취소회신하다