java 通過反射遍歷所有字段修改值的實例代碼
先給大傢介紹下java遍歷所有字段修改值的代碼,具體內容詳情如下所示:
java 通過反射遍歷所有字段修改值,避免重復set、get 比如一張表裡的字段十幾個,而這個表裡的圖片存儲字段有八九個,在返回這個實體類的時候,要對圖片進行加密或者其他操作,那就要在實體類查詢結果出來後,一個個的get修復,再set賦值,代碼量很多,另外如果有多個接口用到,就會產生重復代碼; 通過java 的反射,遍歷所有字段,進行一個判斷,取出來的值是帶有圖片鏈接的,進行操作,省去瞭很多代碼,下面貼代碼
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()); /** * 通過反射所有字段,帶有圖片的字段,重新賦值 * * @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(); // 通過get方法獲取到值 Object o = getMethod.invoke(obj); if (o != null) { String s = o.toString(); if (s.contains("jpg")) { // 業務操作 // 更新為新的值 setMethod.invoke(obj, builder.toString()); } } } } catch (Exception e) { e.printStackTrace(); } } }
ps:下面看下Java數組遍歷的幾種方式
數組遍歷方式參考:
方法一:for循環遍歷
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)靜態方法遍歷
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 通過反射遍歷所有字段修改值的實例代碼的詳細內容,更多關於java遍歷所有字段修改值的資料請關註WalkonNet其它相關文章!