午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

java - 將list<bean> 強(qiáng)轉(zhuǎn)成另一種bean的list。

瀏覽:158日期:2023-11-29 16:39:13

問題描述

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

我需要類似于如下的操作,

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

報(bào)錯(cuò)不可轉(zhuǎn)換的類型,DataBean是個(gè)內(nèi)部靜態(tài)類。C++里面有reinterpret_cast可以強(qiáng)轉(zhuǎn),java應(yīng)該有相應(yīng)的方法的

問題解答

回答1:

Apache Commons 的 BeanUtils 和 Spring 的 BeanUtils 都有提供 copyProperties 方法,作用是將一個(gè)對(duì)象的屬性的值賦值給另外一個(gè)對(duì)象,但前提是兩個(gè)對(duì)象的屬性類型且 名字 相同。

比如使用 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;}@Overridepublic 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;}@Overridepublic String toString() { return 'ChartData{' + 'time=' + time + ', result=' + result + ’}’;} }}

java - 將list<bean> 強(qiáng)轉(zhuǎn)成另一種bean的list。

所以如果 ChartData 和 DataBean 的屬性名稱一致,你的代碼可以這樣寫(就不用挨個(gè)屬性的寫 setter 方法了):

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);}

當(dāng)然,需要注意的一點(diǎn)是,這是使用反射實(shí)現(xiàn)的,效率要比直接寫 setter 方法要低一些。

回答2:

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

強(qiáng)轉(zhuǎn)只能父類轉(zhuǎn)子類,你這就老實(shí)點(diǎn)一個(gè)個(gè)字段set過去就好了

回答4:

樓主學(xué)習(xí)一下 Java 的類型轉(zhuǎn)換啊。這種條件下,不能強(qiáng)轉(zhuǎn)的。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 成年人网站在线免费观看 | 亚州一级 | 欧美日韩中文字幕在线视频 | 国产一级二级三级在线观看 | 99视频+国产日韩欧美 | 久久在线观看 | 精品成人一区二区三区 | 不卡的毛片 | 在线观看欧美精品 | 欧美成人免费视频 | 好吊色在线视频 | 中文字幕专区 | 自拍偷拍日韩 | 黄色网址av | 97精品在线观看 | 亚洲爽爽爽| 久艹精品 | 亚洲一区二区三区免费在线观看 | 国产高清在线观看 | 一级黄色片看看 | 免费在线看黄网站 | 欧美黄色一区二区三区 | 可以免费看的av | 超碰综合 | 日韩欧美一二区 | 日韩精品无码一区二区三区 | 在线观看色网站 | 青青草成人影视 | 欧美在线日韩 | 日本成人在线免费 | 亚洲成人7777 | 在线毛片网站 | 一区二区国产视频 | 日本成人不卡 | 性做爰过程免费看 | 国产一区免费看 | 欧美一级色片 | 狠狠爱综合 | 在线观看亚洲欧美 | 怡春院久久 | 国产精品黄色在线观看 |