最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用反射批量修改java類某一屬性的代碼詳解

 更新時間:2020年07月25日 15:34:02   作者:心寒丶  
這篇文章主要介紹了如何利用反射批量修改java類某一屬性,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

下面看下代碼,具體代碼如下所示:

package utils.copyProperty;
 
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
 
public class CopyProperty {
	public static PropertyDescriptor[] getPropertyDescriptor(Class<?> clz) throws Exception {
		PropertyDescriptor[] propertyDescriptorsFull = 
				Introspector.getBeanInfo(clz).getPropertyDescriptors();
		PropertyDescriptor[] ps = new PropertyDescriptor[propertyDescriptorsFull.length - 1];
		int index = 0;
		for (PropertyDescriptor p : propertyDescriptorsFull) {
			if (!p.getName().equals("class")) {
				ps[index++] = p;
			}
		}
		return ps;
	}
	public static <T> T setPropertyValue(T t,String propertyName,Object value){
		try{
		//獲取屬性描述類
		PropertyDescriptor[] pdArr = getPropertyDescriptor(t.getClass());
		PropertyDescriptor myPD = null;
		for (PropertyDescriptor p : pdArr) {
			//類屬性與傳入屬性對比,為了統(tǒng)一都轉(zhuǎn)小寫
			if(p.getName().toLowerCase().equals(propertyName.toLowerCase())){
				//獲取需要修改屬性
				myPD = p;
				break;
			}
		}
		//根據(jù)需要修改屬性,修改屬性值
		if(myPD!=null){
			Method writeMethod = myPD.getWriteMethod();
			if(myPD.getPropertyType().getName().equals("java.lang.String"))
			{
				writeMethod.invoke(t, value.toString());
			}else{
				writeMethod.invoke(t, value);
			}
			
		}
		}catch(Exception e){
			e.printStackTrace();
		}
		return t;
	}
	public static <T>Collection<T> setPropertyValue(Collection<T> coll,String propertyName,Object value) {
		if(coll!=null)
		for(T t : coll){
			setPropertyValue(t,propertyName,value);
		}
		return coll;
	}
	
	public static void main(String args[]) throws Exception{
		ArrayList<Student> students=new ArrayList();
		Student student=new Student();
		Student student1=new Student();
		students.add(student);
		students.add(student1);
		for (Student stu:students){
			System.out.println("賦值之前:"+stu.getValidStatus());
		}//修改validStatus為0
		CopyProperty.setPropertyValue(students, "validStatus", "0");
		for (Student stu:students){
			System.out.println("賦值之后:"+stu.getValidStatus());
		}
		
		
	}
	public static class Student{
 
		private String name ;
		private String sex;
		private String validStatus="1";
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getSex() {
			return sex;
		}
		public void setSex(String sex) {
			this.sex = sex;
		}
		public String getValidStatus() {
			return validStatus;
		}
		public void setValidStatus(String validStatus) {
			this.validStatus = validStatus;
		}
		
	}
 
}

把student的validStatus狀態(tài)都修改為0,測試效果如下:

到此這篇關(guān)于如何利用反射批量修改java類某一屬性的文章就介紹到這了,更多相關(guān)批量修改java類某一屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Log4j如何屏蔽某個類的日志打印

    Log4j如何屏蔽某個類的日志打印

    這篇文章主要介紹了Log4j如何屏蔽某個類的日志打印,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot項目接收前端參數(shù)的11種方式

    SpringBoot項目接收前端參數(shù)的11種方式

    在前后端項目交互中,前端傳遞的數(shù)據(jù)可以通過HTTP請求發(fā)送到后端, 后端在Spring Boot中如何接收各種復雜的前端數(shù)據(jù)呢?這篇文章總結(jié)了11種在Spring Boot中接收前端數(shù)據(jù)的方式,需要的朋友可以參考下
    2024-12-12
  • java非遞歸實現(xiàn)之二叉樹的前中后序遍歷詳解

    java非遞歸實現(xiàn)之二叉樹的前中后序遍歷詳解

    樹的遍歷順序大體分為三種:前序遍歷(先根遍歷、先序遍歷),中序遍歷(中根遍歷),后序遍歷(后根遍歷),本文將給大家詳細的介紹,對大家的學習或工作具有一定的參考借鑒價值
    2021-09-09
  • Java使用poi做加自定義注解實現(xiàn)對象與Excel相互轉(zhuǎn)換

    Java使用poi做加自定義注解實現(xiàn)對象與Excel相互轉(zhuǎn)換

    這篇文章主要介紹了Java使用poi做加自定義注解實現(xiàn)對象與Excel相互轉(zhuǎn)換,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • springboot+vue實現(xiàn)oss文件存儲的示例代碼

    springboot+vue實現(xiàn)oss文件存儲的示例代碼

    對象存儲服務(wù)是一種海量、安全、低成本、高可靠的云存儲服務(wù),本文主要介紹了springboot+vue實現(xiàn)oss文件存儲的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 解讀CompletableFuture的底層原理

    解讀CompletableFuture的底層原理

    本文探討了Java8中CompletableFuture的原理和應(yīng)用,詳解其異步編程能力、工作機制及實際使用方法,CompletableFuture通過鏈式調(diào)用和狀態(tài)管理優(yōu)化異步任務(wù),提高Java應(yīng)用的效率和性能
    2024-09-09
  • mybatis in foreach 雙層嵌套問題

    mybatis in foreach 雙層嵌套問題

    這篇文章主要介紹了mybatis in foreach 雙層嵌套問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • maven依賴版本沒有按照最短路徑原則生效的解決方案

    maven依賴版本沒有按照最短路徑原則生效的解決方案

    這篇文章主要介紹了maven依賴版本沒有生效的解決方案,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2021-01-01
  • 如何解決java:錯誤:無效的源發(fā)行版:16

    如何解決java:錯誤:無效的源發(fā)行版:16

    這篇文章主要介紹了如何解決java:錯誤: 無效的源發(fā)行版:16問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • JAVA中split函數(shù)的常見用法實例

    JAVA中split函數(shù)的常見用法實例

    Java中我們可以利用split把字符串按照指定的分割符進行分割,然后返回字符串數(shù)組,下面這篇文章主要給大家介紹了關(guān)于JAVA中split函數(shù)的常見用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07

最新評論

延津县| 湟源县| 象州县| 广饶县| 奉新县| 中山市| 图木舒克市| 伊宁市| 沁源县| 建湖县| 尉氏县| 齐河县| 阳朔县| 尼玛县| 宁强县| 册亨县| 吐鲁番市| 稷山县| 仁布县| 读书| 包头市| 施甸县| 武夷山市| 砀山县| 格尔木市| 车致| 平塘县| 师宗县| 江安县| 德阳市| 柳林县| 宝兴县| 中超| 枣庄市| 彭山县| 三河市| 宁陕县| 中方县| 临海市| 通城县| 娄烦县|