首先,我们要了解到获取任意类实例的值有两种不同的方法:
- 通过Field.get(Object instance)方法来获取值。但是这个方法会被访问修饰符限制。于是,isAccessible()和setAccessible()方法成了法宝;
- 通过Field.getName()以及Method.getName()这两者的比较来找到对应的getter()方法,进一步调用invoke(Object instance, Object... parameters)来获取值。
废话少说上代码:
package com.homeland.myapp.util;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import com.homeland.myapp.entity.Employee;
public class ClassUtil {
public static void main(String[] args) throws Exception {
Employee e = new Employee();
e.setAge(33);
e.setSex(1);
e.setCellphone("86186xxxxxxx8");
e.setLastname("Tian");
e.setFirstname("Max");
e.setEmail("max.tian@xxx.com");
printType(e);
}
@SuppressWarnings("rawtypes")
public static void printType(Object instance)
throws Illega