反射rellection

Java开发交流群 677807540   大家可以一起讨论技术欢迎加入

Reflection:反射;
反射四大类型 class interface enum annotation
1.反射是java语言提出的一套在运行期动态获得类中信息的api
编译期:.java -->.class
运行期:加载,class 文件到内存 逐句执行;
类中的信息有属性 方法
2.我们可以通过反射在运行期判断对象的类型,执行类中的方法;
得到类中的属性和方法,创建类的对象;
3反射的入口类 java.lang.Class类
Class是描述类的类,一个Class对象代表一个具体类,
Class类的实例表示正在运行的java应用程序;
jvm加载一个类,创建该类的任何对象之前会在堆区创建Class类的对象,使用这个对象,存放jvm加载的类的信息;
Class类没有公共的构造方法,由jvm自动创建的;
一个类的对象可能有很对个但都共享一个Class对象 所有的基本数据类型和关键字void都有对应的Class对象;
基本数据类型和对应的包装类不是同一个Class对象;
多有具有相同元素数据类型个维数的数字都共享一个Class对象;
三种获取Class对象的方式
类名.class 对象.getClass() Class.forName("包名+类名");


testMethod(Class.forName(args[0])); 在配置中将包名+类名加载;
public static void testMethod(Class cls){}
Class是描述类的,一个Class对象代表一个具体的类
Field:是描述属性的,一个Field对象代表一个具体的属性
Method是描述方法的,一个Method对象代表一个具体的方法
 Class中与属性有关的方法:
     *      getField(String):
     *  getFields():获得本类和直接父类中所有的公共的属性
     *  getDeclaredField
     *  getDeclaredFields:获得本类中所有的属性(包括私有的)
JAVABean 实体类 1属性私有 2getter和setter 3无参构造方法
获得类中过的属性 :修饰符 类型 名字;
首先要得到Class对象 cls
Field[] getDeclaredFields();
属性名(String) .getName() 属性修饰符(int) Modifier.toStriong(f.getModifiers());
属性类型(Class) .getType().getName();
Method[] .getDeclaredMethods();
方法名字<String> .getName() 方法修饰符(int) Modifier.toString(f.getModifiers());
返回类型(Class) .getReturnType().getName();
获得方法参数(Class[]) .getParameterTypes();
                                    方法名       参数
Method m = cls.getDeclaredMethod("setName",String.class)
m.invoke(stu,"etoak");
m1 = cls.getDeclaredMethod("getName");
Object v = m.invoke(stu);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值