黑马程序员————java中反射的学习小结

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

   反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节

码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。 反射的好处:大大的增强了程序的扩展性。 


反射的基本步骤: 

 1、获得Class对象,就是获取到指定的名称的字节码文件对象。

 2、实例化对象,获得类的属性、方法或构造函数。

 3、访问属性、调用方法、调用构造函数创建对象。 获取这个Class对象,

  

有三种方式:


1:通过每个对象都具备的方法getClass来获取。弊端:必须要创建该类对象,才可以调用getClass方法。 


2:每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class。弊端:必须要先明确该类。

 

 前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成。 


3:使用的Class类中的方法,静态的forName方法。 



实用方法:

调用 类名.Class,可以获取该类的字节码

Class cls1=Data.class; 

 
public static void main(String[] args) {  
        String str1="abc";  
        //获取str1字节码  
        Class cls1=str1.getClass();  
        System.out.println(cls1);  
    }  


Field类 代表某个类中的一个成员变量

class Reflecpoint{  
    private int x;  
    public int y;  
    //构造函数  
    public Reflecpoint(int x, int y) {  
        super();  
        this.x = x;  
        this.y = y;  
    }  
}  
//反射类  
public class Method {  
    public static void main(String[] args) throws Exception{  
        Reflecpoint pt1=new Reflecpoint(3, 9);  
        //得到类的成员变量,先要得到该类的字节码  
        //fieldY(共有的)不是对象身上的变量,而是类上,要用它去取某个对象上对应的值  
        Field fieldY=pt1.getClass().getField("y");  
        System.out.println(fieldY.get(pt1));  
        //获取fieldX(私有的) getDeclaredField获取该类中任意成员变量,包括私有  
        Field fieldX=pt1.getClass().getDeclaredField("x");  
        //将该私有字段进行取消权限检查的能力  
        fieldX.setAccessible(true);  
        System.out.println(fieldY.get(pt1));  
    }  
} 


Method类 代表某个类中的成员方法


String str1="abc";  
     Method methodChar=String.class.getMethod("charAt", int.class);  
     //invoke()调用方法  
     System.out.println(methodChar.invoke(str1, 1));  


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值