Java常用對象操作工具代碼實(shí)例
更新時(shí)間:2020年12月10日 10:06:16 作者:碼農(nóng)記事本
這篇文章主要介紹了Java常用對象操作工具代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
對象復(fù)制(反射法)
public static void copyProp(Object from, Object to, String... filterProp) {
HashSet<String> filterSet = new HashSet<String>(Arrays.asList(filterProp));
Class<?> fromc = from.getClass();
Class<?> toc = to.getClass();
List<Field> to_fields = new ArrayList<Field>() ;
while (toc != null) {
to_fields.addAll(Arrays.asList(toc.getDeclaredFields()));
toc = toc.getSuperclass();
}
for (Field to_field : to_fields) {
try{
if (filterSet.contains(to_field.getName())||"serialVersionUID".equals(to_field.getName())) {
continue;
}
Field from_field = null;
try{
from_field = fromc.getDeclaredField(to_field.getName());
}catch (Exception e){
continue;
}
from_field.setAccessible(true);
Object value = from_field.get(from);
if(value==null){
continue;
}
to_field.setAccessible(true);
to_field.set(to, value);
}catch (Exception e){
e.printStackTrace();
}
}
}
- 只copy有值對象
- 不需要copy的屬性用filterProp
- 是能過反射屬性注入方法實(shí)現(xiàn),所有屬性的名稱類型必須一樣
對象復(fù)制(fastJson轉(zhuǎn)換)
單個(gè)
public static <T> T bean2OtherBean(Object bean, Class<T> tClass){
return JSON.parseObject(JSON.toJSONString(bean),tClass);
}
列表
public static <T> List<T> list2OtherList(List originList, Class<T> tClass){
List<T> list = new ArrayList<>();
if(!CollectionUtils.isEmpty(originList)){
for (Object obj : originList) {
T t = bean2OtherBean(obj,tClass);
list.add(t);
}
}
return list;
}
fastjson實(shí)現(xiàn),屬性不一樣必須用注解
對象轉(zhuǎn)MAP
public static <K,V> Map<K,V> bean2map(Object obj) throws IllegalAccessException {
Map<String, Object> map = new HashMap<>();
Class<?> clazz = obj.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
Object value = field.get(obj);
map.put(fieldName, value);
}
return (Map<K, V>) map;
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- IDEA 打開java文件對應(yīng)的class路徑的操作步驟
- Java8 使用 stream().sorted()對List集合進(jìn)行排序的操作
- java jackson 將對象轉(zhuǎn)json時(shí),忽略子對象的某個(gè)屬性操作
- java使用compareTo實(shí)現(xiàn)一個(gè)類的對象之間比較大小操作
- JAVA8 stream中三個(gè)參數(shù)的reduce方法對List進(jìn)行分組統(tǒng)計(jì)操作
- JAVA對象和字節(jié)數(shù)組互轉(zhuǎn)操作
- 利用Java反射機(jī)制實(shí)現(xiàn)對象相同字段的復(fù)制操作
- 使用java反射將結(jié)果集封裝成為對象和對象集合操作
- Java8 Stream對兩個(gè) List 遍歷匹配數(shù)據(jù)的優(yōu)化處理操作
- java中char對應(yīng)的ASCII碼的轉(zhuǎn)化操作
相關(guān)文章
Java多線程實(shí)現(xiàn)模擬12306火車站售票系統(tǒng)
12360火車票售票系統(tǒng)基本上大家都用過,那你知道是怎么實(shí)現(xiàn)的嗎,今天我們就模擬12306火車站售票系統(tǒng)來實(shí)現(xiàn),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
多jdk環(huán)境下指定springboot外部配置文件詳解
這篇文章主要為大家介紹了多jdk環(huán)境下指定springboot外部配置文件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

