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
如果上面方法有啥问题,欢迎批评指教!!
Java判断一个类里是否存在某个属性的更多相关文章
- java判断一个类是否公共类
Modifier.isPublic([类].getModifiers()) Modifier.isAbstract([类].getModifiers())
- JAVA - 如何判断一个类是无用的类
JAVA - 如何判断一个类是无用的类 方法区主要回收的是无用的类,那么如何判断一个类是无用的类的呢? 判定一个常量是否是"废弃常量"比较简单,而要判定一个类是否是"无用 ...
- C#判断一个类中有无"指定名称"的方法
C#中可以通过反射分析元数据来解决这个问题,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...
- iOS 判断一个类是否存在,NSStringFromClass 不用 import 就可以获取类
Class myCls = NSClassFromString(@"Person"); NSString *str = NSStringFromClass(myCls); if ( ...
- Java判断一个字符是否是数字的几种方法的代码
在工作期间,将写内容过程经常用到的一些内容段做个记录,下面内容是关于Java判断一个字符是否是数字的几种方法的内容,希望能对码农们有好处. public class Test{ public stat ...
- Java判断一个字符串中有多少大写字母、小写字母和数字
Java判断一个字符串中有多少大写字母.小写字母和数字 思路: 大写字母就是A-Z之间,小写字母是a-z之间,数字就是0-9之间,于是做判断就好:用到的String知识点,遍历字符串, 长度方法len ...
- Java判断一个字符串是否有中文
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- JAVA 判断一个字符串是不是一个合法的日期格式
原文:http://www.cnblogs.com/xdp-gacl/p/3548307.html 最近开发公司的项目,一直找不到合适的正则表达式可以判断一个字符串是否可以转成日期,今天发现可以采用S ...
- Java判断一个字符串str不为空:方法及时间效率
判断一个字符串str不为空的方法有: 1.str == null; 2.”“.equals(str): 3.str.length <= 0; 4.str.isEmpty(): 注意:length ...
随机推荐
- $strobe$monitor$display
$strobe:当该时刻的所有事件处理完后,在这个时间步的结尾打印一行格式化的文本,语法$strobe( Argument,...);$fstrobe( Mcd, Argument,...);Mc ...
- Python 快排
def quick_sort(array,left,right): if left>=right: return low=left high=right key=array[low]#设置基准数 ...
- 【学习】014 深入理解Http协议
Http协议入门 什么是http协议 http协议: 对浏览器客户端 和 服务器端 之间数据传输的格式规范 查看http协议的工具 1)使用火狐的firebug插件(右键->firebug-& ...
- postman(一):详解在postman中使用环境变量
一.定义环境变量 添加环境分支 添加环境变量 切换环境分支 使用脚本设置环境变量 设置集合级别的变量 二.使用环境变量 使用{{变量名称}}的形式引用环境变量. 注:变量可以用在URL,请求参数,请求 ...
- IDEA将新建项目上传至GitLab
1.首先,需要你自己登录GitLab,并新建一个项目的链接,如下图所示: (此图为图三,该链接下面操作中将会用到!) 2.在idea上新建一个项目,完成之后,需要创建一个git仓库: 3.然后可以根据 ...
- Liunx的软链接和硬链接
ln 命令 命令名称: ln. 英文原意: make links between file. 所在路径: /bin/ln. 执行权限:所有用户. 功能描述:在文件之间建立链接. ln 命令 ...
- 【JavaMail】JavaMail整合RabbitMq发送邮件案例
前言 Linux安装RabbitMQ:https://www.cnblogs.com/jxd283465/p/11975094.html SpringBoot整合RabbitMQ:https://ww ...
- Miniprofiler在目中使用报 mini-profiler-resources/includes.js 404错误
原因,没有配置webconfig <system.webServer> <modules> <remove name="FormsAuthentication& ...
- BZOJ 3329: Xorequ(数位dp+递推)
传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考 ...
- [CSP-S模拟测试]:ants(回滚莫队)
题目描述 然而贪玩的$dirty$又开始了他的第三个游戏. $dirty$抓来了$n$只蚂蚁,并且赋予每只蚂蚁不同的编号,编号从$1$到$n$.最开始,它们按某个顺序排成一列.现在$dirty$想要进 ...