java 反射浅析(一)

一:关于java反射机制的作用
判断任意一个对象所属的类
构造任意一个类的对象
判断任意一个类所具有的成员变量和方法
调用任意一个个对象的方法

二:
 利用如下类实现反射机制,
 Class 类:代表一个类
 Field 类:代表类的成员变量
 Method 类:代表类的方法
 Consrructor 类的构造方法
 Array类 提供动态创建数组,以及访问数组元素的静态方法
 Java 中,无论生成某个类的多少个对象。这些对象都会对应于同一个Class对象。

三:实现反射的步骤:
1.获得String类的Class 对象([color=red]注意:该对象是类的对象,所以对其String类来说它还是一个类,要想利用String 的方法和属性还必须实例化)[/color]Class<?> classtype = Class.forName(“java.lang.String”)
2.Method [] methods = classtype.getDeclaerMethods()
(该数组中保存了String 类的所以方法)

四:创建一个Test类实例个几种方法:
1. Test tt = new Test() (用new关键字产生)传统方法
2. Calss<?> classtype = Test.class :得到该类的一个Class 对象
Object tt = classtype.new Instance() :得到Test 对象的实例(只能生成无参数的Test对象)
等价于:Constructor cons = classtype.getConstructor(new Class[]{String.class,int.class})
Object tt = cons.newInstansce(new object[]{}); //返回的也是Test对象


一般访问Test 的add(int x,int y)的方法为:tt.add(3,4)
五:利用反射访问步骤如下:1.首先生成Test 类的Class 对象 假设为:tcalss
2 其次:Method addMethod = tcalss.getMethod(“add”,new Class[]{int.class,int.class})
根据函数名和参数得到你要访问的方法。该语句返回的是一个Method 对象
3.得到该方法后调用inoke函数 传参
addMethod.invoke(Test,new object[]{1,3})

addMethod.invoke(object obj, object args)
该方法参数说明 :
Obj – the object the underlying method is invoked form
Args – the arguments used for the method call

(假定上面的方法为 public add(itn x,int y))

 得到某个类的Class 对象3种方式:
1. 调用Class 静态方法: Class<?> tt = Class.forName(“java.lang.string”):
2. 使用类的.class 语法: String.class
3. 使用Object 类的getclass方法:String s = “a”, Class <?> s = s.getclass();


六 :用构造函数法生成有参对象
例如 类个构造函数为public Test(int x,int y){}
1. Class<? > classtype = Test.getclass();
2. Constructor cons = classtype.getConstructor(new Class[]{int.class,int.class})
3. Object obj = cons.newInstance(new Object[]{3,4})
这相当 Test tt = new Test(3,4);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值