java反射——基础

来源:互联网 发布:怎么申请多个淘宝号 编辑:程序博客网 时间:2024/04/29 08:28
  1. class类的使用
    java世界里万事万物皆对象,那么每一个类都是对象
    类是java.lang.class类的实例对象(有一个类,名字就是Class)
    任何一个类都是Class的实例对象,有三种表示方式:
    第一种(告诉我们任何一个类都有一个隐含的静态成员变量):
    Class c1 = Foo.class
    第二种(已知该类Foo的对象foo1通过getClass()方法)
    Class c2 = foo1.getClass()
    其中c1 ,c2代表了类(Foo)的类型(class type),万事万物皆对象
    第三种
    Class c3 = null; c3 = Class.forName(“类所在包的全称+类名”);
    一个类只能有一种类型,所以c1 == c2 ; c2 == c3;
    可以用类类型创建该类的对象,即可以用c1 c2 c3来创建类的Foo类的对象:Foo foo = (Foo)c1.newInstance(),要进行强制类型转换。
  2. class类动态加载类的方法
    要区分动态加载和静态加载:
    静态加载:在编译的时候就要加载的,new操作创建对象时是静态加载类,在编译时就要加载所有可能用到的类
    动态加载:运行时加载,运行时根据需要加载相关的类,Class.forName(“类的全称”),然后利用上面提到的实例化对象方式进行实例化,实例化要进行强制类型转换,创建一个接口,然后让有类似功能的类去实现接口中的相应方法即可!
  3. 成员变量也是对象(java.lang.reflect.Field)
  4. 构造函数也是对象(java.lang.reflect.Constructor)
  5. 方法的反射操作 method.invoke(对象, 参数列表)
    6.通过反射了解集合泛型的本质(通过Class Method)

目前就了解了一下反射的最基本的概念和用法,但是觉得很有用,有种豁然开朗的感觉,今后再加深对反射的学习和应用

0 0