java 遍历对象中的所有属性(字段)和类型案例

该博客介绍了如何处理一个房产交易系统中的业务需求,通过调用查询房屋交易状态的接口,获取VO对象并根据其属性判断房屋是否可售。文章详细展示了如何遍历对象属性,检查关键字段以确定房屋的销售状态,并给出了模拟业务处理的代码示例。

业务场景:一个房产交易系统中的业务需求,查询房屋交易状态接口,调用第三方接口返回一个vo对象,该对象的属性主要是描述该房屋的交易情况,比如是否抵押,是否被查封等,现在需要利用该对象的值决定返回给调用方的返回值。(现在一个对象中有很多个属性,大部分属性的值影响返回结果)
代码:
vo对象:

@Data
public class BDCQZTXX {

    private String fwbm;//房屋编码
    private String bdcdyh;//不动产单元号
    private String xzqhdm;//行政区划代码
    private String sfybdy;//是否ybdy
    private String sfzgedy;//是否zgedy
    private String sfzjgcdy;//是否在建工程抵押
    private String sfcf;//是否查封
    private String sfycf;//是否预查封
    private String sfyg;//是否预购
    private String sfydy;//是否预抵押
    private String sfyy;//是否异议
    private String sfdy;//是否抵押
    private String sfsd;//是否sd
    private String sfdj;//是否登记
    private String sfzdzr;//是否zdzr
    private String sfzbyw;//是否在办业务
    private String bz;//备注

.
.
.
模拟业务处理(测试)


	public static void main(String[] args){
	//模拟调用接口返回的对象数据
		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字符串转对象(fastjson)
		BDCQZTXX bdcqztxx =JSONObject.parseObject(s, BDCQZTXX.class);
		//遍历对象的字段数组
		for (Field f : bdcqztxx.getClass().getDeclaredFields()) {
			f.setAccessible(true);//表示反射对象是否抑制java语言访问
			String name = f.getName();//获取字段名称
			Object value = f.get(bdcqztxx);//获取对应字段的值
			Class<?> type = f.getType();//获取对应字段的类型
			System.out.println(type);
			
			//不需要判断的字段
			if ("FWBM".equals(name) ||
					"BDCDYH".equals(name) ||
					"BZ".equals(name) ||
					"XZQHDM".equals(name)) {
				System.out.println("当前不影响判断的字段为 "+name + ":" + value);
				continue;
			}
			
			System.out.println("当前影响判断的字段为 "+name + ":" + value);
			//需要判断的字段
			if ("1".equals(String.valueOf(value))) {
				//0为不可售
				sfks = 0;
				break;
			}
		}
		
		if (sfks == 1) {
			System.out.println("可售");
		}
		if (sfks == 0) {
			System.out.println("不可售");
		}


	}

.
.
.
就此完成!!!

### Java中使用数组组合名称属性对象属性的示例 在Java中,可以通过定义一个类来封装名称其他对象属性,并将其实例化为对象存入数组中。这种方式能够有效组织数据结构,使程序更具可读性扩展性。 #### 定义类 首先需要定义一个包含所需字段(如名称其他对象属性)的类。例如,这里我们创建了一个名为`Person`的类,其中包含了两个属性:`name`作为名称属性,`address`作为一个简单的对象属性代表地址。 ```java class Person { private String name; private Address address; public Person(String name, Address address) { this.name = name; this.address = address; } public String getName() { return name; } public Address getAddress() { return address; } @Override public String toString() { return "Person{name='" + name + "', address=" + address + "}"; } } class Address { private String city; private String street; public Address(String city, String street) { this.city = city; this.street = street; } @Override public String toString() { return "Address{city='" + city + "', street='" + street + "'}"; } } ``` 以上代码展示了如何构建嵌套的对象模型[^1]。 #### 创建并初始化数组 接着可以创建一个`Person`类型的数组,并向其中填充若干个`Person`对象实例。 ```java public class Main { public static void main(String[] args) { // 初始化几个Address对象 Address addr1 = new Address("Beijing", "Chang'an Street"); Address addr2 = new Address("Shanghai", "Nanjing Road"); // 声明并初始化Person对象数组 Person[] people = new Person[2]; people[0] = new Person("Alice", addr1); people[1] = new Person("Bob", addr2); // 遍历输出数组内容 for (Person person : people) { System.out.println(person.toString()); } } } ``` 此部分演示了如何将自定义类的对象放入数组之中,并通过增强型for循环逐一访问这些元素及其内部细节[^5]。 --- ### 总结 上述例子清楚地表明了在Java里怎样借助数组把带有名称特性的实体同其他复杂特性相结合起来加以整理保存的过程。这种技术不仅限于这里的案例,还可以广泛应用于各种场合当中去管理关联紧密的一系列资料项。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值