java反射机制

1.Java在运行期就可以知道对象所属的类,可以构造任意类的对象,判断任意对象的属性方法,可以在运行期调用任意对象的方法。

2.动态语言:开发者社区认为:程序运行时允许改变程序结构或变量类型,这种语言成为动态语言,c++,java,c#不是动态,java虽不是动态语言、但却有Reflection,“反射。映像、倒影”

    Java可以加载一个在运行时才可以知道名称的class,获悉其完整构造,并生成对象等的能力被称为introspection(“内省、內观、反省”)与反射式两个并提的术语

3不管java中一个类有多少个对象、但这些对象只对应于同一个Class对象。

4.首先获得class对象(三种1.Demo.class2.forName(com.test.Demo)3. getClass()方法),用newInstance获得class对象的实例classType,classType调用getmethod()方法获得方法实例addMethod,

  addMethod调用invoke方法传值获得方法调用。

Class<?>classType=InvokeTester.class;

        ObjectinvokeTester=classType.newInstance();

        Method addMethod=classType.getMethod("add",new Class[]{int.class,int.class});

       Object result=addMethod.invoke(invokeTester,new Object[]{1,2});

 

一个类对应一个class对象,一个方法对应一个method对象。

可变参数一定是最后一个。所以一个方法最多一个可变参数。

5.要想使用反射,必须先

6.若想通过类的不带参数的构造方法来生成对象。两种方法:

 a)先获得class对象,通过该对象的newInstance()方法

  Class<?> clazz=String.class;

Objectobj=clazz.newInstance();

 b)先获得class对象,然后通过对应的Constructor对象,再通过该Constructor随想的newInstance()方法生成

  Class<?> clazz=Customer.class;

   Constructorcons=clazz.getConstructor(new Class[]{});

   Objectobj=cons.newinstance(new Object[]{});

Java.lang.Array类:

7.Integer.Type与Integer.Class/前者返回原生类型int、后者是返回真正的类。

Method.setAccessible(true);可以用来压制java默认的格式,使反射机制可以调用私有方法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值