【黑马程序员】java中的反射机制

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

 反射就是java 自我管理类和对象的一个机制。

反射是通过Class类来实现的。

java将磁盘类文件加载到内存中,为一个实例,这个对象时Class的实例。

每一个类在内存中都有独一无二的字节码,虚拟机通过字节码加载类区别不同类。

有三种方法获得类的字节码:

一: Class a = string.class;

二: Class b = “abd”。getclass();

三:Class c = forName(“java。lang。string”);

当获得Class类的对象后,可以通过 newInstance()方法获得反射类的实例对象。需要注意的是被实例化对象的类中必须有一个无参的构造方法。

当类中没有无参的构造的方法时候可以通过getConstructors()获得类的所有构造方法

反射的功能可以获得类中完整的结构。可以通过java。lang。reflect。包中的 Constructor,Field,Method类来实现。

获得类的全部接口:getInterface()方法获得一个Class类的对象数组,可以通过getName()得到名字

获得父类: getSuperclass()

一:获得全部构造方法:class c = …………;      constructior co【】 = c。getConstructors();  co【i】。getModifiers() 取出权限。

         class  p【】 = co【i】。getParameterType() 取得构造方法中的参数类型

二:获得全部方法:

        Method me【】 = c。getMethods();   

        获得返回值类型     me【i】。getReturnType();

         获得全部参数类型   me【i】。getParameterType()

三:获得全部属性:

      Field    f【】 = c。getDeclaredFields();

     f【i】。getType() 获得属性类型

    

 

通过反射调用类中的方法:

Method m = c。getMethod(方法名);

m。invoke(c。newInstace());必须传入一个类的实例

如果方法有参数: method m = c。getMethod(方法名,参数类型);

  m。invoke(c。newInstance(),参数)

 

反射操作数组:

int arr【】 = {34,25,14,4,}

 Class a = arr。getClass()。getComponentType();

………………………………………………(a。getName())

system。out。print(Array。getLength(arr))

…………………………………………(Array。get(arr,2))

Array。set(arr,2,56)     改变下标2的数组值

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值