通过java反射获取对象

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;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/maqingbin8888/article/details/85604162
今日推荐