Java基础——反射

目录

一、概念

二、获取Class对象的方法:

三、Class对象的使用

 

写在文章前:对于这些知识点,如果有错误、不准确的地方,欢迎指正!

一、概念


    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
    
    反射就是把java类中的各种成分映射成一个个的Java对象
    例如:一个类有:属性、成员方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象,如Constructor、Field、Method等。


二、获取Class对象的方法:


    1、调用方法getClass(),该方法继承自Object类;
    2、调用每个类都有的静态属性class,如Student.class;
    3、使用类Class的静态方法forName(packageName);
    
    注意:在运行期间,一个类,只有一个Class对象产生,即通过以上三种方式获取到的Class,总是相等的(==)。


三、Class对象的使用


    1、构造方法:
        getConstructors();//获取所有的公有的构造方法
        getDeclaredConstructors();//获取公有、私有、受保护、默认的构造方法
        
        getConstructor(Type...);//根据不同的参数类型,返回符合参数类型的、公有的构造方法;
        getDeclaredConsturctor(Type...);//根据不用的参数类型,返回符合参数类型的构造方法(public、private、protected、默认)
        
    2、成员属性

        getFields();//获取所有的公有的属性
        getDeclaredFields();//获取公有、私有、受保护、默认的属性
        
        getField(Type...);//根据不同的参数类型,返回符合参数类型的、公有的属性;
        getDeclaredField(Type...);//根据不用的参数类型,返回符合参数类型的属性(public、private、protected、默认)
        
        filed.set(Obj, value);//field:属性, obj:类型值,可以通过class的构造方法去获取,value:属性值
            例:
            Object obj = stuClass.getConstructor().newInstance();//产生Student对象--》Student stu = new Student();
            //为字段设置值
            f.set(obj, "刘德华");//为Student对象中的name属性赋值--》stu.name = "刘德华"
        
    3、成员方法:
        getMethods();//获取所有的公有的成员方法
        getDeclaredMethods();//获取公有、私有、受保护、默认的成员方法
        
        getMethod(methodName, Type...);//根据方法名、不同的参数类型,返回符合参数类型的、公有的成员方法;
        getDeclaredMethod(Type...);//根据方法名、不同的参数类型,返回符合参数类型的成员方法(public、private、protected、默认)
        注:第一个是调用的方法名称,第二个是方法的形参类型,切记是类型。
        
        Method m = stuClass.getMethod("show1", String.class);
        //实例化一个Student对象
        Object obj = stuClass.getConstructor().newInstance();
        m.invoke(obj, "刘德华");//一个是要调用的对象(获取有反射),一个是实参
        
        main方法:获取main方法时,具体类型参数为String[].class,即Method methodMain = clazz.getMethod("main", String[].class)

 

 

PS:相关参考代码可以见下面链接提供下载

链接:https://pan.baidu.com/s/1ZVO1dLSRjl-jJ0gUhYVclg   密码:qv24

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值