java 通過(guò)反射遍歷所有字段修改值的實(shí)例代碼
先給大家介紹下java遍歷所有字段修改值的代碼,具體內(nèi)容詳情如下所示:
java 通過(guò)反射遍歷所有字段修改值,避免重復(fù)set、get 比如一張表里的字段十幾個(gè),而這個(gè)表里的圖片存儲(chǔ)字段有八九個(gè),在返回這個(gè)實(shí)體類的時(shí)候,要對(duì)圖片進(jìn)行加密或者其他操作,那就要在實(shí)體類查詢結(jié)果出來(lái)后,一個(gè)個(gè)的get修復(fù),再set賦值,代碼量很多,另外如果有多個(gè)接口用到,就會(huì)產(chǎn)生重復(fù)代碼; 通過(guò)java 的反射,遍歷所有字段,進(jìn)行一個(gè)判斷,取出來(lái)的值是帶有圖片鏈接的,進(jìn)行操作,省去了很多代碼,下面貼代碼
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ClassUtil { private final Logger logger = LoggerFactory.getLogger(getClass()); /** * 通過(guò)反射所有字段,帶有圖片的字段,重新賦值 * * @param obj 對(duì)象 */ public void setImageValue(Object obj) { try { Class aClass = obj.getClass(); Field[] fields = aClass.getDeclaredFields(); for (Field field : fields) { PropertyDescriptor pd = new PropertyDescriptor(field.getName(), aClass); // 獲取get方法 Method getMethod = pd.getReadMethod(); // 獲取set方法 Method setMethod = pd.getWriteMethod(); // 通過(guò)get方法獲取到值 Object o = getMethod.invoke(obj); if (o != null) { String s = o.toString(); if (s.contains("jpg")) { // 業(yè)務(wù)操作 // 更新為新的值 setMethod.invoke(obj, builder.toString()); } } } } catch (Exception e) { e.printStackTrace(); } } }
ps:下面看下Java數(shù)組遍歷的幾種方式
數(shù)組遍歷方式參考:
方法一:for循環(huán)遍歷
public static void main(String[] args) { int Arr[][]={{1,2,3},{4,5,6}}; for (int i = 0; i < Arr.length; i++) { for (int j = 0; j < Arr[i].length; j++) { System.out.print(Arr[i][j]+" "); } } }
方法二:foreach遍歷
int a[] = {1,2,3,4} ; for (int element:a){ System.out.println(element); }
方法三:Arrays工具類中toString (或deepToString)靜態(tài)方法遍歷
int a[] = {1,2,3,4} ; int b[][] = {{3,4},{1,2}}; System.out.println(Arrays.toString(a)); System.out.println(Arrays.deepToString(b));
以上就是java 通過(guò)反射遍歷所有字段修改值的實(shí)例代碼的詳細(xì)內(nèi)容,更多關(guān)于java遍歷所有字段修改值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java短網(wǎng)址服務(wù)(TinyURL)生成算法
這篇文章主要為大家詳細(xì)介紹了java短網(wǎng)址服務(wù)生成算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08java中Hibernate面試知識(shí)點(diǎn)整理
在本篇文章里小編給大家整理的是一篇關(guān)于java中Hibernate面試知識(shí)點(diǎn)整理內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01詳細(xì)分析Java內(nèi)部類——局部?jī)?nèi)部類
這篇文章主要介紹了Java局部?jī)?nèi)部類的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java 內(nèi)部類的知識(shí),感興趣的朋友可以了解下2020-08-08java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07JDK21新特性Record?Patterns記錄模式詳解(最新推薦)
這篇文章主要介紹了JDK21新特性Record?Patterns記錄模式詳解,本JEP建立在Pattern?Matching?for?instanceof(JEP?394)的基礎(chǔ)上,該功能已在JDK?16中發(fā)布,它與Pattern?Matching?for?switch(JEP?441)共同演進(jìn),需要的朋友可以參考下2023-09-09springBoot+mybatis-plus實(shí)現(xiàn)監(jiān)聽(tīng)mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)增刪改
mybatis-plus技術(shù)是簡(jiǎn)化了繁瑣的代碼操作,把增刪改查的語(yǔ)句都內(nèi)置了,直接調(diào)用就可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查了,這篇文章主要給大家介紹了關(guān)于springBoot+mybatis-plus實(shí)現(xiàn)監(jiān)聽(tīng)mysql數(shù)據(jù)庫(kù)數(shù)據(jù)增刪改的相關(guān)資料,需要的朋友可以參考下2024-01-01