Java基础之反射

一、加载类的三种方式

    Class clazz1=Class.forName("类的完整名称");
  Class clazz2=new Person().getClass();
  Class clazz3=Person.class;

二、Class对象提供了如下常用方法

    public Constructor getConstructor(Class<?>...parameterTypes)
  public Method getMethod(String name,Class<?>...parameterTypes)
  public Field getField(String name) 
 
  public Constructor getDeclaredConstructor(Class...parameterTypes)
  public Method getDeclaredMethod(String name,Class<?>...parameterTypes)
  public Field getDeclaredField(String name)  

三、学习

   1.获取对应的class对象
        方式1:★
            Class clazz=Class.forName("全限定名");
        方式2:
            Class clazz=类名.class;
        方式3:
            Class clazz==对象.getClass();

    2.通过class对象创建一个实例对象(相当于  new 类())
        Object clazz.newInstance();
    3.通过class对象获取一个方法(public修饰的)
        Method method=clazz.getMethod("方法名",Class .... paramType);
            paramType为参数的类型
    4.让方法执行:
        method.invoke(Object 实例对象,Object ... 参数);
            Object 实例对象:以前调用方法的对象 就是a
            Object ... 参数:该方法运行时需要的参数 就是 10和30
        执行这个方法 相当于
            a.add(10,30);
        例如:
            method.invoke(a,10,30)

四、反射的作用 

框架与框架要解决的核心问题

    框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。

  框架要解决的核心问题

    我在写框架时,你这个用户可能还在上小学,还不会写程序呢?我写的框架程序怎样能调用到你以后写的类呢?

    因为在写才程序时无法知道要被调用的类名,所以,在程序中无法直接new 某个类的实例对象了,而要用反射方式来做。

综合案例

  先直接用new  语句创建ArrayList和HashSet的实例对象,演示用eclipse自动生成 ReflectPoint类的equals和hashcode方法,比较两个集合的运行结果差异。

  然后改为采用配置文件加反射的方式创建ArrayList和HashSet的实例对象,比较观察运行结果差异。

  引入了elipse对资源文件的管理方式的讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值