- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- java 通過(guò)反射遍歷所有字段修改值的實(shí)例代碼
先給大家介紹下java遍歷所有字段修改值的代碼,具體內容詳情如下所示:
java 通過(guò)反射遍歷所有字段修改值,避免重復set、get 比如一張表里的字段十幾個(gè),而這個(gè)表里的圖片存儲字段有八九個(gè),在返回這個(gè)實(shí)體類(lèi)的時(shí)候,要對圖片進(jìn)行加密或者其他操作,那就要在實(shí)體類(lèi)查詢(xún)結果出來(lái)后,一個(gè)個(gè)的get修復,再set賦值,代碼量很多,另外如果有多個(gè)接口用到,就會(huì )產(chǎn)生重復代碼; 通過(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 對象 */ 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(); } } }
數組遍歷方式參考:
方法一: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工具類(lèi)中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í)例代碼的詳細內容,更多關(guān)于java遍歷所有字段修改值的資料請關(guān)注腳本之家其它相關(guān)文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站