欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何遍歷對(duì)象中的所有屬性(字段)和類型

 更新時(shí)間:2023年07月24日 14:12:30   作者:識(shí)你老鼠  
這篇文章主要介紹了java如何遍歷對(duì)象中的所有屬性(字段)和類型問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java遍歷對(duì)象中的所有屬性(字段)和類型

業(yè)務(wù)場(chǎng)景

一個(gè)房產(chǎn)交易系統(tǒng)中的業(yè)務(wù)需求,查詢房屋交易狀態(tài)接口,調(diào)用第三方接口返回一個(gè)vo對(duì)象,該對(duì)象的屬性主要是描述該房屋的交易情況,

比如是否抵押,是否被查封等,現(xiàn)在需要利用該對(duì)象的值決定返回給調(diào)用方的返回值。(現(xiàn)在一個(gè)對(duì)象中有很多個(gè)屬性,大部分屬性的值影響返回結(jié)果)

代碼:

vo對(duì)象:

@Data
public class BDCQZTXX {
    private String fwbm;//房屋編碼
    private String bdcdyh;//不動(dòng)產(chǎn)單元號(hào)
    private String xzqhdm;//行政區(qū)劃代碼
    private String sfybdy;//是否ybdy
    private String sfzgedy;//是否zgedy
    private String sfzjgcdy;//是否在建工程抵押
    private String sfcf;//是否查封
    private String sfycf;//是否預(yù)查封
    private String sfyg;//是否預(yù)購
    private String sfydy;//是否預(yù)抵押
    private String sfyy;//是否異議
    private String sfdy;//是否抵押
    private String sfsd;//是否sd
    private String sfdj;//是否登記
    private String sfzdzr;//是否zdzr
    private String sfzbyw;//是否在辦業(yè)務(wù)
    private String bz;//備注

模擬業(yè)務(wù)處理(測(cè)試)

public static void main(String[] args){
	//模擬調(diào)用接口返回的對(duì)象數(shù)據(jù)
		String s = "{\n" +
				"    \"fwbm\": \"1\",\n" +
				"    \"bdcdyh\": \"1\",\n" +
				"    \"xzqhdm\": \"1\",\n" +
				"    \"sfdy\": \"0\",\n" +
				"    \"sfzjgcdy\": \"0\",\n" +
				"    \"sfcf\": \"0\",\n" +
				"    \"sfyg\": \"0\",\n" +
				"    \"sfydy\": \"0\",\n" +
				"    \"sfyy\": \"0\",\n" +
				"    \"sfdyi\": \"0\",\n" +
				"    \"sfsd\": \"0\",\n" +
				"    \"sfdj\": \"0\",\n" +
				"    \"sfzdzr\": \"0\",\n" +
				"    \"sfzbym\": \"0\",\n" +
				"    \"bz\": \"\"\n" +
				"  }";
		//是否可售(0不可售1可售)
		int sfks = 1;
		//json字符串轉(zhuǎn)對(duì)象(fastjson)
		BDCQZTXX bdcqztxx =JSONObject.parseObject(s, BDCQZTXX.class);
		//遍歷對(duì)象的字段數(shù)組
		for (Field f : bdcqztxx.getClass().getDeclaredFields()) {
			f.setAccessible(true);//表示反射對(duì)象是否抑制java語言訪問
			String name = f.getName();//獲取字段名稱
			Object value = f.get(bdcqztxx);//獲取對(duì)應(yīng)字段的值
			Class<?> type = f.getType();//獲取對(duì)應(yīng)字段的類型
			System.out.println(type);
			//不需要判斷的字段
			if ("FWBM".equals(name) ||
					"BDCDYH".equals(name) ||
					"BZ".equals(name) ||
					"XZQHDM".equals(name)) {
				System.out.println("當(dāng)前不影響判斷的字段為 "+name + ":" + value);
				continue;
			}
			System.out.println("當(dāng)前影響判斷的字段為 "+name + ":" + value);
			//需要判斷的字段
			if ("1".equals(String.valueOf(value))) {
				//0為不可售
				sfks = 0;
				break;
			}
		}
		if (sfks == 1) {
			System.out.println("可售");
		}
		if (sfks == 0) {
			System.out.println("不可售");
		}
	}

就此完成?。。?/p>

java遍歷對(duì)象屬性,并將屬性值不為空的取出

public void getValue(SelectIdListDto selectIdListDto){
?? ??? ?Field[] field = selectIdListDto.getClass().getDeclaredFields(); ? ? ? ?
?? ??? ?for(int j=0 ; j<field.length ; j++){ ? ?
?? ? ? ? ? ?String name = field[j].getName(); ??
?? ? ? ? ? ?name = name.substring(0,1).toUpperCase()+name.substring(1);?
?? ? ? ? ? ?String type = field[j].getGenericType().toString(); ?
?? ? ? ? ? ?if(type.equals("class java.lang.String")){ ??
?? ? ? ? ? ? ? ?Method m;
?? ? ? ? ? ? ? ?String value;
?? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ?m = selectIdListDto.getClass().getMethod("get"+name);
?? ??? ??? ??? ??? ?value = (String) m.invoke(selectIdListDto);
?? ? ? ? ? ? ? ? ? ?if(value != null && !"".equals(value)){ ?
?? ? ? ? ? ? ? ? ? ? ? ?System.out.println(name);
?? ? ? ? ? ? ? ? ? ? ? ?System.out.println(value);
?? ? ? ? ? ? ? ? ? ?}?
?? ??? ??? ??? ?} catch (IllegalAccessException e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?} catch (IllegalArgumentException e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?} catch (InvocationTargetException e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?} catch (NoSuchMethodException e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?} catch (SecurityException e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?} ?
?? ? ? ? ? ?} ? ? ? ? ? ? ? ? ??
?? ??? ?}
?? ?}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java swing實(shí)現(xiàn)QQ賬號(hào)密碼輸入框

    java swing實(shí)現(xiàn)QQ賬號(hào)密碼輸入框

    這篇文章主要為大家詳細(xì)介紹了Java swing實(shí)現(xiàn)QQ賬號(hào)密碼輸入框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Java面試題沖刺第十七天--基礎(chǔ)篇3

    Java面試題沖刺第十七天--基礎(chǔ)篇3

    這篇文章主要為大家分享了最有價(jià)值的三道java基礎(chǔ)面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 使用Sentinel滑動(dòng)窗口實(shí)現(xiàn)限流和降級(jí)

    使用Sentinel滑動(dòng)窗口實(shí)現(xiàn)限流和降級(jí)

    Sentinel 是一個(gè)開源的高可用性、高擴(kuò)展性的實(shí)時(shí)流量控制框架,它可以用于保護(hù)服務(wù)穩(wěn)定性,防止系統(tǒng)因?yàn)榱髁窟^大而崩潰,這篇文章我們所介紹的是滑動(dòng)窗口,它是 Sentinel 實(shí)現(xiàn)限流和降級(jí)的重要組件之一,感興趣的同學(xué)跟著小編來看看吧
    2023-09-09
  • IDEA報(bào)錯(cuò):java?找不到符號(hào)圖文解決過程

    IDEA報(bào)錯(cuò):java?找不到符號(hào)圖文解決過程

    這篇文章主要給大家介紹了關(guān)于IDEA報(bào)錯(cuò):java?找不到符號(hào)解決的相關(guān)資料,運(yùn)行項(xiàng)目時(shí)Idea報(bào)錯(cuò),提示找不到符號(hào),但是這個(gè)類在項(xiàng)目里是存在的,網(wǎng)上找了很多文章都沒解決,浪費(fèi)了一個(gè)下午終于弄好了,記錄一下,需要的朋友可以參考下
    2023-08-08
  • 詳解Maven多模塊打包遇到的問題解決方法

    詳解Maven多模塊打包遇到的問題解決方法

    這篇文章主要介紹了詳解Maven多模塊打包遇到的問題解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • SWT(JFace) 體驗(yàn)之FontRegistry

    SWT(JFace) 體驗(yàn)之FontRegistry

    測(cè)試代碼如下:
    2009-06-06
  • SpringBoot中使用Flyway進(jìn)行數(shù)據(jù)庫遷移的詳細(xì)流程

    SpringBoot中使用Flyway進(jìn)行數(shù)據(jù)庫遷移的詳細(xì)流程

    本文介紹了如何在Spring Boot項(xiàng)目中使用Flyway進(jìn)行數(shù)據(jù)庫遷移,Flyway通過SQL腳本管理數(shù)據(jù)庫變更,支持自動(dòng)執(zhí)行和版本控制,避免了手動(dòng)執(zhí)行SQL腳本的錯(cuò)誤和維護(hù)困難,需要的朋友可以參考下
    2025-02-02
  • Spring jackson原理及基本使用方法詳解

    Spring jackson原理及基本使用方法詳解

    這篇文章主要介紹了Spring jackson原理及基本使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Spring JPA事務(wù)管理與自定義操作實(shí)例解析(最新推薦)

    Spring JPA事務(wù)管理與自定義操作實(shí)例解析(最新推薦)

    在Spring框架中,數(shù)據(jù)持久化操作常常與事務(wù)管理緊密相關(guān),本文將深入探討Spring Data JPA中的事務(wù)管理機(jī)制,并結(jié)合具體實(shí)例,展示如何自定義事務(wù)行為以滿足不同的業(yè)務(wù)需求,感興趣的朋友一起看看吧
    2024-12-12
  • Java中spring讀取配置文件的幾種方法示例

    Java中spring讀取配置文件的幾種方法示例

    本篇文章中主要介紹了Java中spring讀取配置文件的幾種方法示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02

最新評(píng)論