一、序言
今天,偶然在某大神代码里看到针对jpa的一个搜索分装类,由于在实现查询中,首先肯定不止一个类需要查询,也就是存在多个类,所以肯定不能写死的拼接条件,最好是采用动态,这里就涉及到一个问题,如何去遍历一个类的所有属性及其值。
二、正式介绍
道理相信看到的朋友都懂,就是反射,就是Field类,对于字段的所有东西,都可以在该类中找到,而且采用反射不管是什么类
/**
* @author ruiMin
* @date 2020/1/30 15:24
*/
public class Test {
public static void main(String[] args) throws IllegalAccessException {
// 假设的未知类
User obj = new User("张三",20);
//获取其class类型,通过反射获取到其所有字段
Class<?> cla = obj.getClass();
Field[] fields = cla.getDeclaredFields();
//在获取到所有字段后,就可以进行遍历
for (Field field : fields) {
//每一个Filed代表类的的属性,存放着有关属性的所有信息
//通过 Filed的get()方法
// 入参是一个Object对象,代表需要从总获取值得对象,这里也就是User实例对象
// 返回值 是关于该对象中,此属性对应的值
Object val = field.get(obj);
//属性的名,也就是字段名
String name = field.getName();
//输出结果
System.out.println(name + " " + val);
}
}
}
class User {
String name;
int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}