黑马程序员-Java高新技术_分析反射

                                                 ---------------------- android培训java培训、期待与您交流! ----------------------

        反射的基础是Class类,在面向对象的世界里任何事物都是一个对象,可以抽取相类似事物的共性,创建一个类。当然java里的class也是一类事物,描述它的是java里的Class类。
        java里每条代码都会编译成一条字节码,所以每定义一个类当然这个类最终也是通过一串字节码表示。所以每个类都有一个class成员变量,这样Class类的使用是这样的一种方式, 如:Class cls1 = String.class;获得类的字节码有三种方式,如String.class;String.getClass();Class.forName("类名");,反射里主要使用Class.forName();
        “反射就是把java里类个成分映射成相应的类”,这些类如:Method,Field,Contructer,Package等等。
         使用这些反射类创建目标类对象的方法有两种,通过Constructer.newInstance(),和Class.newInstance();
         知识点1:反射类是描述java里定义的类所有成分的类,它操作的都是类,不是对象。如反射类里的Field类,它想要操作某个具体对象得使用get方法传入对象。
         知识点2:jdk里描述数组类型,每一个数组,如果具有相同的元素类型,相同的维度(一维还是几维)都属同一个类型。反射数组用Array,操作数组用Arrays。
        知识点3:使用Method.invoke()时,由于低版本不支持不定参的特性,为了兼容低版本,当要调用的方法参数是一个数组时,调用invoke传入目标方法参数是一个数组,invoke方法会认为它是要调用方法的参数列表,而不会认为它是一个参数。这里的一个解决方案是用object数组包装下如:new object[]{new String[]{"1","2","3"}}.
        疑惑1:Field类能取到某个对象的成员变量,也你能通过暴力获取私有成员变量,但能不能改变私有成员变量的值了(经测试不能改变私有成员的值,但是没有捕捉到异常!)?
 
        
                                ---------------------- android培训java培训、期待与您交流! ----------------------

    详细请查看: http://edu.csdn.net/heima

转载于:https://www.cnblogs.com/lcode/articles/2452082.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值