ImageVerifierCode 换一换
格式:TXT , 页数:3 ,大小:5.85KB ,
资源ID:46615      下载积分:5 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-46615.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(谈谈java 反射机制.txt)为本站会员(凯文文)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

谈谈java 反射机制.txt

1、Person p=new Person();这是什么?当然是实例化一个对象了.可是这种实例化对象的方法存在一个问题,那就是必须要知道类名才可以实例化它的对象,这样我们在应用方面就会受到限制.那么有没有这样一种方式,让我们不知道这个类的类名就可以实例化它的对象呢?Thank Goodness!幸亏我们用的是java, java就提供了这样的机制.1).java程序在运行时可以获得任何一个类的字节码信息,包括类的修饰符(public,static等),基类(超类,父类),实现的接口,字段和方法等信息.2).java程序在运行时可以根据字节码信息来创建该类的实例对象,改变对象的字段内容和调用对象方法

2、.这样的机制就叫反射技术.可以想象光学中的反射,就像我们照镜子,镜子中又出现一个自己(比喻可能不太恰当,但是足以表达清楚意思了).反射技术提供了一种通用的 接程序 的方法,不必要 程序 要的类 码到 程序中, 得我们可以创建 的程序.Java的反射机制是通 反射API来实现的,它 程序在运行 程中 得任何一个 知名 的类的内 信息.反射API java.lang.reflect包中. 要包括以 类:1).Constructor类:用来 一个类的 方法2).Field类:用来 一个类的变3).Method类:用来 一个类的方法.4).Modifer类:用来 类内的修饰符5).Array:用来对c

3、urrency1 行“.Constructor,Field,Method这个类是JVM(fifl机)在程序运行时创建的,用来表 类中应的.这个类实现了java.lang.reflect.Member接口,Member接口 了获 类 方法等信息的方法.要 用这反射API,必须得到要“的对象类的Class类的实例.通 调用Class类的newInstance方法(能调用类的” 方法)可以创建类的实例.这样有限,我们可以 类的Class实例获 类 要的 方法,然在 用反射来创建类的一个实例.一.获 类的 方法的Constructor对象(currency1 )Constructor getDecla

4、redConstructors(); 类的 有的 方法的Constructor对象currency1 .Constructor getDeclaredConstructor(Class paramTypes); 类的 方法的Constructor对象,paramTypes了currency1类 .Constructor getConstructors(); 类的 有的public类 的 方法的Constructor对象currency1 .Constructor getConstructor(Class paramTypes); 类的的public类 的 方法的Constructor对象,pa

5、ramTypes了currency1类 . 个类中没有 方法,一个和个方法的currency1 中有一个,就是的 方法;个类中 了有currency1的 currency1, 没有 currency1,一个和个方法的currency1 中不包 的 方法.例子:import java.lang.reflect.*;public class DumpMethods public static void main(String args) tryif(args.length1)System.out.println(“ 的类名 “);return;Class strClass=Class.forNam

6、e(args0);/ 有currency1的 方法Class strArgsClass=new Class byte.class,String.class;Constructor constructor=strClass.getConstructor(strArgsClass);System.out.println(“Constructor:“+constructor.toString();/调用 有currency1的 方法创建实例对象objectbyte bytes=“java就 “.getBytes();Object strArgs=new Objectbytes,“gb2312“;Ob

7、ject object=constructor.newInstance(strArgs);System.out.println(“Object“+object.toString();catch(Exception e)e.printStackTrace(); 运行 :.获 类变的Field对象(currency1 )Field getDeclaredFields(): 类的 有变的Field对象currency1 ,不包括 父类的变.Field getDeclaredField(String name): 类的 有变的Field对象,不包括 父类 的变,currency1name变的名 .Fi

8、eld getFields(): 类的 有public 的变的Field对象currency1 ,包括 父类的变Field getField(String name): 类的 有变的Field对象,包括 父类 的变,currency1name变的名 .例子:import java.lang.reflect.*;public class ReflectTest private String name;private String age;public ReflectTest(String name,String age)this.name=name;this.age=age;public sta

9、tic void main(String args) / TODO 自 方法存根tryReflectTest rt=new ReflectTest(“zhanghandong“,“shiba“);fun(rt);catch(Exception e)e.printStackTrace();public static void fun(Object obj) throws ExceptionField fields=obj.getClass().getDeclaredFields();System.out.println(“ 的:“); for(Field field:fields)System.

10、out.println(field.getName()+“=“+field.get(obj); if(field.getType().equals(java.lang.String.class)field.setAccessible(true); /必须 true才可以修改变String org=(String)field.get(obj);field.set(obj,org.replaceAll(“a“,“b“);System.out.println(“ 的 “);for(Field field:fields)System.out.println(field.getName()+“=“+fi

11、eld.get(obj); 运行 :.获 类的方法的Method对象(currency1 )Method getDeclaredMethods(): 类的 有方法的Method对象currency1 ,不包括 父类的方法.Method getDeclaredMethod(String name,Class paramTypes): 类的 有方法的Method对象,不包括 父类 的方法,currency1name方法的名 ,currency1paramTypes方法的currency1类 .Method getMethods(): 类的 有方法的Method对象currency1 ,包括 父类

12、的方法.Method getMethod(String name,Class paramTypes): 类的 有方法的Method对象,包括 父类 的方法,currency1name方法的名 ,currency1paramTypes方法的currency1类 . 类的 信息int getModifiers(): 类的修饰符的 .Package getPackage(): 类的包名Class getSuperclass(): 类的父类的Class实例.Class getInterfaces(): 类实现的接口的Class对象currency1 .boolean isInterface(): 类是 是接口.反射的能 ,但是 用不当可能会 ,反射 码,会 来 的问题.

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报