基于java反射筛选List对于不同实体泛型的公共方法
来源:互联网 发布:gif制作软件 编辑:程序博客网 时间:2024/06/03 16:40
前提:在最近做的项目当中有个奇葩的需要,就是需要将已知的list<实体类>进行一次筛选,查找list里面属性中的值是否包含某个值(模糊查询)。将符合要求的对象添加到一个list1里面,从而生成一个新的
list1<实体类>。
在上面的需求当中主要的就是需要在实现这个方法中,能将其需求抽离出来,不管实体类到底是哪个实体类都能调用该方法。
所以我们在设置方法的时候需要传递2个参数,1.要筛选的list<实体>,2.需要匹配的字段str,那么方法返回的是新的list。或者我们在调用方法之前遍历list<实体类>设置方法的2个参数,1.参数为list<实体类>.get(i),2.需要匹配的字段str,那么返回的是布尔类型。在调用方法的外面去add新的list。
按照上面设置的思路我们进行编写代码
情况1:
按照上面的描述。我们在编写公共方法时,传递的参数为要筛选的list<实体>,需要匹配的字段str
public static List<Object> testClass(List<Object> object,String str)
因为是公共方法 所以在我们的方法中不能去具体的规定List的泛型。上面的方法做会出现参数类型的报错。
所以情况1不是那么合适。
情况2:在情况2中设置的方法为:
public static boolean testClass(Object object,String string)
调用方法时:
所图所示就能完成参数的对应了。接下来看公共方法中的具体实现内容。
package com.lotus.billing.utils;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;/** * 用来将原来的list列表数据转化筛选的工具类 ListFilter.java * @author HQ L * TIME :2017年9月27日09:54:24 */public class ListFilter { /** *<p> *实现list筛选的公共方法 *</p> *@param Object 传入进行筛选的的类 *@param string 匹配字符串 *return boolean 返回参数true或者false判断是否存在要筛选的字符串 */ public static boolean testClass(Object object,String string) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ //通过反射getClass获取传入参数对象的实体类 Class class1 = object.getClass(); //获取传入参数的属性 Field[] fields = class1.getDeclaredFields(); //将所有属性值拼接在一起成为新的字符串 String sb = new String(); for (Field field : fields){ //获取get方法 Method m = (Method) class1.getMethod( "get" +field.getName()); //拼接字符串 sb = sb+m.invoke(object); } //调用字符串检查的方法 return fuzzyFiltering(sb, string); } public static boolean fuzzyFiltering(String searchText,String str){ if(!"".equals(searchText)&&searchText!=null){ if(searchText.indexOf(str) !=-1){ return true; } } return false; }}
@我家女人从不撒娇 可以@我一起学习讨论
阅读全文
0 0
- 基于java反射筛选List对于不同实体泛型的公共方法
- java 反射比较两个实体类不同
- Java反射之获取私有公共的属性和方法
- 对于java反射的理解
- 通过反射填充泛型集合List的静态方法
- 通过反射填充泛型集合List的静态方法
- 基于注解和反射的Java ORM框架(4)-数据库自动生成Java实体类
- 基于注解和反射的Java ORM框架(6)-数据库自动生成Java实体类源码
- 高效筛选两个List中的不同的元素
- SqlHelper 泛型方法,反射,支持实体类
- java通过反射调用不同参数的方法
- 自定义注解(反射机制)查找实体间的不同
- Java反射---方法的反射、深入了解泛型
- Python代码分析,对于列表使用list += list 和 list = list + list的不同
- Java集合框架之List公共方法
- Java反射 根据不同方法名动态调用不同的方法
- 利用java反射机制导出Excel的公共方法以及使用的方法
- 解决实体类噩梦:联合实体类(Java反射+泛型实际应用)
- vue+bootstrap响应是轮播绑数据(视频门户网站)
- iOS开发笔记之Timestamp时间戳与各地区实际时间格式的相互转换
- python如何装饰递归函数
- java的JDK安装好后运行cmd显示没有安装成功
- ros学习笔记-lesson1
- 基于java反射筛选List对于不同实体泛型的公共方法
- 第2次课改善深层神经网络:超参数优化、正则化以及优化
- 接入支付宝SDK遇到的坑
- Selenium php-webdrive元素等待
- Mac OS X系统 HomeBrew的安装和简单使用
- js中简易选项卡的实现(3种方法实现样式的封装)
- TCP三次握手和四次挥手过程
- Android 相关资料
- MyBatis基本了解