Rumah > Soal Jawab > teks badan
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
大家讲道理2017-05-17 10:09:31
BeanUtils
Apache Commons dan 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
和 DataBean
Spring
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, gunakanBeanUtils
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);
}
🎜🎜
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梦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());
迷茫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
阿神2017-05-17 10:09:31
Poster asal harus mempelajari penukaran jenis Java. Di bawah syarat ini, pemindahan paksa tidak boleh dilakukan.