java反射机制


第1章 Class类的使用

 1-1 Class类的使用

1Class class1=Foo.class; ------->实际在告诉我们,任何一个类都有一个隐含的静态成员变量

2: Class class2=foo1.getClass()---->已知该类的对象,通过该类的对象通过getClass方法

  class1class2表示Foo类的类类型(class type

       Foo这个类本身就是一个对象  

3: Class class3=null;

   class3=Class.forName();
class1==class2==class3


第2章 动态加载类

2-1动态加载类 

1new出来的都是静态加载类,一招出错,全盘皆输;
2
、动态加载类
Class c = Class.forName(args[0]);

OfficeAble oa = (OfficeAble)c.newInstance();//OfficeAble定义的功能类型接口


-第3章 获取方法信息

3-1获取方法信息 


-第4章 获取成员变量构造函数信息

4-1获取成员变量构造函数信息 


-第5章 方法反射的基本操作

 5-1方法反射的基本操作 

Person p=new Person();
Class cls=p.getClass();

Method speak=cls.getMethod("speak", new Class[]{String.class});

Object res=speak.invoke(p, new Object[]{"李四"});  //p.speak("李四");

-第6章 通过反射了解集合泛型的本质

6-1通过反射了解集合泛型的本质

     public static void main(String[] args) {
         ArrayList list=new ArrayList();

        ArrayList<String> list1=new ArrayList<String>();
           list1.add("hello");
           //list1.add(10);报错

        Class c1=list.getClass();
        Class c2=list1.getClass();
        System.out.println(c1==c2);//结果为true,java中的泛型是防治错误输入的,只在编译阶段有效

       //通过方法的反射验证上述说法
try {
      Method m = c2.getMethod("add", Object.class);
      m.invoke(list1, 10);//通过编译操作绕过了泛型
      System.out.println(list1);
} catch (Exception e) {
      e.printStackTrace();
}

      }                                                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值