利用反射获取实体类的相关信息

假设我们现在有一个实体类sys_config
1.获取该实体的信息有3种方法:
第一种(通过对象调用 getClass() 方法来获取,通常应用在:比如你传过来一个 Object 类型的对象,而我不知道你具体是什么类,用这种方法):

// 利用new实体来获取,适合测试练习使用
sys_config sc= new sys_config();
Class<? extends sys_config> class1 = sc.getClass();
System.out.println(class1); // class com.hokai.MybatisPlusDemo.entity.sys_config (class 具体的包名+类名)
System.out.println(class1.getName()); // com.hokai.MybatisPlusDemo.entity.sys_config (具体的包名+类名)
// 获取类的所有属性
Field[] fields = class1.getDeclaredFields();
    for (Field field : fields) {
       // field.getType().getName() 获取属性的数据类型的名称 例:java.lang.String 等
       // field.getName()  获取类中属性的名称
	System.out.println("对应的数据类型 :"+ field.getType().getName()+"  属性名:"+field.getName());
	}
    Method[] methods = class1.getDeclaredMethods();
    for (Method method : methods) {
		System.out.println("方法: "+method.getName());
	}

第二种:

// 每个类都有一个静态的成员变量class
System.out.println(sys_config.class); //class com.hokai.MybatisPlusDemo.entity.sys_config

第三种:(通过 Class 对象的 forName() 静态方法来获取,也是最常用的方法,但必须要捕捉ClassNotFoundException 异常)

try {
	Class<?> className = Class.forName("com.hokai.MybatisPlusDemo.entity.sys_config"); //指定类名
	System.out.println(className);           // class com.hokai.MybatisPlusDemo.entity.sys_config
	System.out.println(className.getName()); // com.hokai.MybatisPlusDemo.entity.sys_config
	int lastIndexOf = className.getName().lastIndexOf(".");
	System.out.println(className.getName().substring(lastIndexOf+1));// sys_config
 } catch (ClassNotFoundException e) {
	//e.printStackTrace();
	System.out.println("类没有找到,请核实!");
 }

2.通过 Class 类获取成员变量、成员方法、接口、超类、构造方法等

查阅 API 可以看到 Class 有很多方法(上面我们通过3中获取到类的信息了,可以直接利用获取到的类信息来调用下面的API):

getName():获得类的完整名字。

getFields():获得类的public类型的属性。

getDeclaredFields():获得类的所有属性。包括private 声明的和继承类

getMethods():获得类的public类型的方法。

getDeclaredMethods():获得类的所有方法。包括private 声明的和继承类

getMethod(String name, Class[] parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes 参数指定方法的参数类型。

getConstructors():获得类的public类型的构造方法。

getConstructor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes 参数指定构造方法的参数类型。

newInstance():通过类的不带参数的构造方法创建这个类的一个对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值