反射机制获取类三种方法:
//第一种方式:
Class a= Class.forName("Person");
//第二种方式:
Class a = Person.class;
//第三种方式:
Persons person= new Person();
Class a = person.getClass();
例如:
public <T> T getObject(Class<T> object, Map<String, Object> map) throws Exception {
Class a=Sebaseinfo.class;
T pojo = object.newInstance();
Field[] fields = object.getDeclaredFields();
for (int i = 0,length=fields.length; i < length; i++) {
Field field = fields[i];
String fieldName = field.getName();
System.out.println(fieldName);
Set<String> keys = map.keySet();
Iterator<String> keyI = keys.iterator();
while (keyI.hasNext()) {
String key = keyI.next();
if(fieldName.equalsIgnoreCase(key)){
String firstFieldNameLetter = fieldName.substring(0, 1).toUpperCase();
String setMethodName = "set" + firstFieldNameLetter+ fieldName.substring(1);
Method setMethod = object.getMethod(setMethodName, field.getType());
setMethod.invoke(pojo, map.get(key));
}
}
}
return pojo;
}
public static void main(String[] args) {
ReflectUtil reflectUtil=new ReflectUtil();
Map<String, Object> map=new HashMap<String, Object>();
map.put("name", "李四");
try {
Person person=reflectUtil.getObject(Person.class, map);
} catch (Exception e) {
e.printStackTrace();
}
}
方法关键字 | 含义 |
getDeclaredMethods() | 获取所有的方法 |
getReturnType() | 获得方法的放回类型 |
getParameterTypes() | 获得方法的传入参数类型 |
getDeclaredMethod("方法名",参数类型.class,……) | 获得特定的方法 |
|
|
构造方法关键字 | 含义 |
getDeclaredConstructors() | 获取所有的构造方法 |
getDeclaredConstructor(参数类型.class,……) | 获取特定的构造方法 |
|
|
父类和父接口 | 含义 |
getSuperclass() | 获取某类的父类 |
getInterfaces() | 获取某类实现的接口 |