java - Tukar senarai<bean> kepada senarai kacang lain.
PHP中文网
PHP中文网 2017-05-17 10:07:31
0
4
991
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中文网

认证0级讲师

membalas semua(4)
大家讲道理
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. 🎜
过去多啦不再A梦
List<DataBean> yValue = data.stream().map(item -> {
    DataBean bean = new DataBean();
    bean.setName(item.getResult());
    bean.setValue(item.getTime());
    return bean;
}).collect(Collectors.toList());
迷茫

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

阿神

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!