java 反射 判断是否存在_Java判断一个类里是否存在某个属性

Java判断一个类里是否存在某个属性

测试pojo类,比方我有个User类

@Getter

@Setter

public class User {

private Long id;

private String name;

private Integer age;

private String email;

}

我现在判断User是否存在某个属性

方式一、按照常理来说第一种办法肯定是通过反射拿到这个类的所有属性,循环遍历再去一一比较,这种办法是可行的,但是感觉这种方式不是太好。

/**

* 判断你一个类是否存在某个属性(字段)

*

* @param fieldName 字段

* @param obj 类对象

* @return true:存在,false:不存在, null:参数不合法

*/

public static Boolean isExistFieldName(String fieldName, Object obj) throws NoSuchFieldException {

if (obj == null || StringUtils.isEmpty(fieldName)) {

return null;

}

//获取这个类的所有属性

Field[] fields = obj.getClass().getDeclaredFields();

boolean flag = false;

//循环遍历所有的fields

for (int i = 0; i < fields.length; i++) {

if (fields[i].getName().equals(fieldName)) {

flag = true;

break;

}

}

return flag;

}

方式二、通过上网看到有些朋友说把java对象转成 JSONObject,然后使用JSONObject的方法来解决,我感觉挺好,就试试。

/**

* 判断你一个类是否存在某个属性(字段)

*

* @param field 字段

* @param obj 类对象

* @return true:存在,false:不存在, null:参数不合法

*/

public static Boolean isExistField(String field, Object obj) {

if (obj == null || StringUtils.isEmpty(field)) {

return null;

}

Object o = JSON.toJSON(obj);

JSONObject jsonObj = new JSONObject();

if (o instanceof JSONObject) {

jsonObj = (JSONObject) o;

}

return jsonObj.containsKey(field);

}

测试:

public static void main(String[] args) throws NoSuchFieldException {

String field = "email";

User user = new User();

System.out.println("【方式一】:" + isExistFieldName(field, user));

System.out.println("【方式二】:" + isExistField(field, user));

}

//结果 field=email

【方式一】:true

【方式二】:true

//结果 field=e-mail

【方式一】:false

【方式二】:false

如果上面方法有啥问题,欢迎批评指教!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值