Rumah  >  Soal Jawab  >  teks badan

java - Tukar senarai<bean> kepada senarai kacang lain.

public static class DataBean {
    private int value;
    private BigDecimal name;}
public class ChartData {
    private Integer time;
    private BigDecimal result;}

Saya memerlukan operasi yang serupa dengan yang berikut,

List<ChartData> data = getdata();
List<SeriesBean.DataBean> yValue = data.stream().map(item -> (SeriesBean.DataBean) item);

Ralat melaporkan jenis tidak boleh tukar, DataBean ialah kelas statik dalaman.
Terdapat reinterpret_cast dalam C++ yang boleh memaksa penukaran, dan Java sepatutnya mempunyai kaedah yang sepadan

PHP中文网PHP中文网2711 hari yang lalu995

membalas semua(4)saya akan balas

  • 大家讲道理

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

    BeanUtils

    Apache Commons dan BeanUtils BeanUtilsSpringBeanUtils 都有提供 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

    kedua-duanya menyediakan kaedah copyProperties, yang digunakan untuk menetapkan nilai sifat objek Kepada objek lain, tetapi hanya jika kedua-dua objek mempunyai jenis atribut dan

    nama

    yang sama. 🎜 🎜Sebagai contoh, gunakan BeanUtils Apache Commons: 🎜
    List<ChartData> data = getdata();
    List<DataBean> yValue = new ArrayList<>(data.size());
    for (ChartData item : data) {
        DataBean bean = new DataBean();
        BeanUtils.copyProperties(bean, item);
        yValue.add(bean);
    }
    🎜🎜
    🎜Jadi jika nama sifat ChartData dan DataBean adalah sama, kod anda boleh ditulis seperti ini (tidak perlu menulis kaedah penetap untuk setiap sifat): 🎜 rrreee 🎜Sudah tentu, satu perkara yang perlu diberi perhatian ialah ini dilaksanakan menggunakan refleksi, yang kurang cekap daripada menulis kaedah penetap secara langsung. 🎜

    balas
    0
  • 过去多啦不再A梦

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

    List<DataBean> yValue = data.stream().map(item -> {
        DataBean bean = new DataBean();
        bean.setName(item.getResult());
        bean.setValue(item.getTime());
        return bean;
    }).collect(Collectors.toList());

    balas
    0
  • 迷茫

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

    Pemindahan paksa hanya boleh dilakukan dari kelas ibu bapa ke kelas kanak-kanak Hanya klik pada setiap medan dan tetapkan

    balas
    0
  • 阿神

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

    Poster asal harus mempelajari penukaran jenis Java. Di bawah syarat ini, pemindahan paksa tidak boleh dilakukan.

    balas
    0
  • Batalbalas