反射机制和内省(Introspector)以及BeanUtils内省框架笔记

目录:

  1. 反射机制传送
  2. 内省(Introspector)以及BeanUtils内省框架传送

反射介绍

反射是什么:
  • java反射机制是在*运行状态中*,对于任意一个实体类,都能够知道这个类的所有属性方法对于任意一个对象,都能够调用它的任意方法属性(意思是我们可以知道运行状态中的任意实体类的属性和方法,并进行对象属性和方法的调用)。
  • 这种动态的获取信息以及动态调用对象属性和方法的功能称为java的反射机制
  • 反射:反射是框架的灵魂,将类的各个组成部分封装为其他对象。
  • 反射的好处:可以在程序的运行过程中去操作对象(例如泛型动态插入),字节码文件,不需要重新编译。
  • 提高了程序的扩展性,复用性,解耦(降低耦合性);
java代码在计算机中经历的三个阶段:

在这里插入图片描述
获取类相关信息的方法:

<U> Class<? extends U> asSubclass(Class<u> clazz);//把传递的类的对象转换成代表其子类的对象
ClassLoader getClassLoader();//获得类的加载器
Class<?>[] getClasses();//返回一个数组,数组中包含该类中所有公共类和接口类的对象
Class<?>[] getDeclaredClasses();//返回一个数组,数组中包含该类中所有类和接口类的对象
static Class<?> forName(String className);//根据类名返回类的对象
String getName();//获得类的完整路径名字
T newInstance();//创建类的实例
getPackage();//获得类的包
String getSimpleName();//获得类的名字
String getSuperclass();//获得当前类继承的父类的名字
getInterfaces();//获取当前类实现的类或是接口
.class();//获取当前对象的类

获取类的三种方式
三种返回类型是Class

(1)Object–>getClass//object子类都可以调用getClass方法

(2)任何数据类型(包括基本的数据类型)都有一个“静态”的class属性

(3)通过class类的静态方法:forName(String className)(最常用)


public class Fanshe {
	public static void main(String[] args) {
		//第一种方式获取Class对象  
		Student stu1 = new Student();//这一new 产生一个Student对象,一个Class对象。
		Class stuClass = stu1.getClass();//获取Class对象
		System.out.println(stuClass.getName());
		
		//第二种方式获取Class对象
		Class stuClass2 = Student.class;
		System.out.println(stuClass == stuClass2);//判断第一种方式获取的Class对象和第二种方式获取的是否是同一个
		
		//第三种方式获取Class对象
		try {
			Class stuClass3 = Class.forName("fanshe.Student");//注意此字符串必须是真实路径,就是带包名的类路径,包名.类名
			System.out.println(stuClass3 == stuClass2);//判断三种方式是否获取的是同一个Class对象
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}	
	}
}

注意,在运行期间,一个类,只有一个Class对象产生,所以打印结果都是true;

三种方式中,常用第三种,第一种对象都有了还要反射干什么,第二种需要导入类包,依赖太强,不导包就抛编译错误。一般都使用第三种,一个字符串可以传入也可以写在配置文件中等多种方法。

剩余一部分余内容转载(我个人觉得写得很好):
https://blog.csdn.net/a745233700/article/details/82893076?spm=1001.2014.3001.5506

还有详解未更新完…

内省(Introspector)以及BeanUtils内省框架

返回目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CharmDeer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值