反射

序中一般的对象类型都是在编译器就确定下来的,而反射机制可以动态的创建对象并调用其属性,这样的对象在编译期是未知的;
反射:(不能预知未来,但可驾驭未来)
1)可以在运行时获得类的成员和成员信息;
2)核心:JVM在运行时才动态的加载类或调用属性/访问属性,不需要事先知道运行对象是谁;
反射的功能:
1)运行时判断任意一个对象所属的类;
2)运行时构造任意一个类的对象;
3)运行时判断任意一个类具有的成员变量和方法(通过反射甚至可以调用private方法);
4)运行时调用任意一个对象的方法;
重点:运行时而不是编译时
反射的用途:
1)开发各种框架;
反射的作用:
1)获得类对象:
a) 使用 Class.forName 静态方法: Class.forName(包名+类名);
b) 使用 .class 方法:Class c=String.class;
c) 使用类对象的 getClass() 方法:String s-new String(“hello”);Class c=str.getClass();
2)判断是否为某个类的实例:isInstance()方法
3)创建实例:
a)使用Class对象的new Instance()方法来创建Class对象对应类的实例
Class<?> c=String.class;Object o=c.new Instance();
b)先通过Class对象获取一个指定的Constructor对象,在调用Contructor对象的Instance()方法来创建实例;
Class<?> c=String.class;Contructor contructor=c.getContructor(String.class);
Object obj=contructor.new Instance();
4)获取类属性
a)通过Class对象的getFields()方法获取Class的公有的属性以及父类的属性,但无法获取私有属性;
b) 通过Class对象的getDeclaredFields()方法获取Class的属性以及私有属性,但不包括父类的属性;
c)getField:访问公有的成员变量;
d)getDeclaredField:获取所有已生命的成员变量,但不能得到其父类的成员变量;
5)获取类方法
a)getMethod:方法返回一个特定的方法,其中第一个参数为方法名称,后面的参数为方法的参数对应的Class的对象;
b)getMethods方法返回某个类的所有公有(public)方法,包括其继承类的公有方法;
c)getDeclaredMethods方法返回类或接口的所有方法,但不包括继承的方法;
6)获取构造方法
a)通过Class的getConstructor()方法得到Constructor类的一个实例;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值