欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

reflect,

来源: javaer 分享于  点击 7704 次 点评:218

reflect,


反射

什么是反射

反射是Java提供的动态执行机制, 可以动态加载类, 动态创建对象, 动态访问属性, 动态调用方法..

静态执行: Java代码经过编译以后就确定的执行次序, 称为静态执行次序

Foo foo = new Foo();
foo.test();

动态执行: 在运行期间才确定创建那个类的对象, 执行那个方法!

Java 反射API可以实现动态执行!

案例: 执行某个类中全部的以test为开头的方法. (必须使用使用反射实现)

反射:

反射功能

动态加载类

Class cls = Class.forName(类名)

作用: 将类名对应的类加载到方法区, 如果类名错误则抛出异常.

动态创建对象

Object obj = cls.newInstance();

特点:

  • 动态创建对象
  • 可以创建任何对象
  • cls对应的类必须有无参数构造器!!!
  • 如果没有无参数构造器则抛出异常!
  • 反射API利用Constructer API支持有参数构造器, 略…

反射可以查询类中的方法

可以返回类中声明的全部方法信息

Method[] methods = cls.getDeclaredMethods(); 
for(Method m:methods){
    System.out.println(m);//输出方法信息
}

Declared 声明的
Method 方法

动态执行方法

执行方法:

案例:

Method m = cls.getDeclaredMethod(方法名);//在类信息上查找一个方法信息
//m 代表 cls类上的一个方法信息
Object obj=cls.newInstance();//动态创建对象
//动态调用(invoke)方法
Object val = m.invoke(obj);

反射用途

相关文章

    暂无相关文章
相关栏目:

用户点评