您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“怎么使用Java的發(fā)射機制遍歷所有字段的修改值”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“怎么使用Java的發(fā)射機制遍歷所有字段的修改值”這篇文章吧。
java 通過反射遍歷所有字段修改值,避免重復(fù)set、get 比如一張表里的字段十幾個,而這個表里的圖片存儲字段有八九個,在返回這個實體類的時候,要對圖片進行加密或者其他操作,那就要在實體類查詢結(jié)果出來后,一個個的get修復(fù),再set賦值,代碼量很多,另外如果有多個接口用到,就會產(chǎn)生重復(fù)代碼; 通過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")) {
// 業(yè)務(wù)操作
// 更新為新的值
setMethod.invoke(obj, builder.toString());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
數(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的基本數(shù)據(jù)類型分為:1、整數(shù)類型,用來表示整數(shù)的數(shù)據(jù)類型。2、浮點類型,用來表示小數(shù)的數(shù)據(jù)類型。3、字符類型,字符類型的關(guān)鍵字是“char”。4、布爾類型,是表示邏輯值的基本數(shù)據(jù)類型。
以上是“怎么使用Java的發(fā)射機制遍歷所有字段的修改值”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。