Class.forName(xxxx)获取实例对象
private Class<? extends DataSource> getDataSourceType(String typeStr) {
Class<? extends DataSource> type;
try {
if (StringUtils.hasLength(typeStr)) {
// 字符串不为空则通过反射获取class对象
type = (Class<? extends DataSource>) Class.forName(typeStr);
} else {
// 默认为hikariCP数据源,与springboot默认数据源保持一致
type = HikariDataSource.class;
}
return type;
} catch (Exception e) {
//无法通过反射获取class对象的情况则抛出异常,该情况一般是写错了,所以此次抛出一个runtimeexception
throw new IllegalArgumentException("can not resolve class with type: " + typeStr);
}
}
获取字段名和字段值
package aaa;
import java.lang.reflect.Field;
public class test {
public static void main(String[] args) throws Exception{
aa a = new aa(11,"小明");
//获取class对象a中声明的所有字段
Field[] field = a.getClass().getDeclaredFields();
for(int i=0;i<field.length;i++){
//设置是否允许访问,不是修改原来的访问权限修饰词。
field[i].setAccessible(true);
//返回输出指定对象a上此 Field表示的字段名和字段值
System.out.println(field[i].getName()+":"+field[i].get(a));
}
}
public static class aa{
private int id;
private String name;
public aa(){
}
public aa(int id,String name){
this.id = id;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
}