java反射

   java反射机制:是指在运行时,动态获取类或者类的属性和方法,调用调用对象方法的功能。

   java反射的动态性质: 1.运行时生成对象实例

  2.运行时嗲用方法

    3.运行时更改属性

  java反射原理:在运行时加载编译期间,在不知道名字的类,探知类的结构信息,创建类的实例,调用创建类的属性和方法。具体是指,应用能够自描述和自控制的机制和能力

   java反射功能:1.在运行时判断任意一个对象所属的类

        2.在运行时构造任意一个类

        3.在运行时判断任意一个类所具有的方法和属性

               4.在运行时调用任意一个类

   java反射常用类:  

1.java.lang.Class    反射的核心类,用于获取类的属性,方法等内容

      2.java.lang.reflet.Field     类的属性,可以获取和设置类中的属性

    3.java.lang.reflect.Method   类的方法,可以获取类的方法或者执行

            4.java.lang.reflect.Constructor    类的构造方法

   java反射具体功能实现:

1.获取类对象

1.Class<?>  cla=Class.forName("java.lang.String“);   ///必须是完整的类名

2.Class<?>  cla1=new String().getClass();

3.Class<?>  cla2=String.class;

2.根据类对象来实例化

1.Person person=cla.newsInstance();//必须存在无参的构造函数

2.通过获取构造函数来实例化

1.获取所有的public构造函数:Constructor[] cons=cla.getConstructors() ;

Constructor  con=cla.getConstructor(String.class);

         2.实例化:Person person=cons[1].newInstance();

   Person person1=cons[0].newInstance("男");

3.获取方法:

1.获取所有的public方法:Method [] methods=cla.getMethods();

2.获取所有的方法与方法的反问级别无关: Method [] methods=cla.getDeclaredMethods();

3.获取单独方法:Method method=cla.getMethod("gethaha");//无参

调用:method.invoke();

Method method1=demo1.getMethod("sayHello", String.class,Integer.class);
method1.invoke(demo1.newInstance(), "张三",14);
//有参数

4.获取所有的属性:

1.获取所有的本类的public属性:Field [] fields=cla.getFields();

2.获取所有的本类的属性,与访问级别无关  Field [] fields=cla.getDeclaredFields();

3.获取指定的属性: Field field=cla.getDeclaredField("sex");

field.setAccessible(true);
field.set(obj,"男");
System.out.println(field.get(obj));

5.获取类的接口

1.Class<?>[]   inters=cla.getInterfances();

6.获取类的父类:

1.Class <?> cla3=cla.getSuperClass();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值