java的反射机制.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:24 大小:133KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

java的反射机制.ppt

java的反射机制.ppt

预览

免费试读已结束,剩余 14 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

12Class与类动态装入Stringname="hello";ClassstringClass=name.getClass();System.out.println("类名:"+stringClass.getName());System.out.println("是否为接口:"+stringClass.isInterface());System.out.println("是否为基本类型:"+stringClass.isPrimitive());System.out.println("是否为数组:"+stringClass.isArray());System.out.println("父类名:"+stringClass.getSuperclass().getName());Class的信息是在编译时确定的执行时JVM在使用某个类时,会先检查对应的Class对象是否装入如果沒有装入,则会寻找对应的.class档案并装入一个类在JVM中只会有一个Class实例每个类的实例都会记得自己是由哪个Class实例所生成可使用getClass()或.class来取得Class实例7数组是对象,也有其对应的Class实例从Class中获得信息try{Classc=Class.forName(args[0]);Packagep=c.getPackage();System.out.println(p.getName());}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("没有指定类");}catch(ClassNotFoundExceptione){System.out.println("找不到指定类");}Classc=Class.forName(args[0]);Packagep=c.getPackage();System.out.printf("package%s;%n",p.getName());//取得类型修饰,是否是class、interfaceintm=c.getModifiers();System.out.print(Modifier.toString(m)+"");//如果是接口if(Modifier.isInterface(m)){System.out.print("interface");}else{System.out.print("class");}System.out.println(c.getName()+"{");//获得声明的成员Field[]fields=c.getDeclaredFields();for(Fieldfield:fields){//显示权限修饰,如public、protected、privateSystem.out.print("\t"+Modifier.toString(field.getModifiers()));//显示名称System.out.print(""+field.getType().getName()+"");//输出成员名称System.out.println(field.getName()+";");}//获得构造方法Constructor[]constructors=c.getDeclaredConstructors();for(Constructorconstructor:constructors){//输出控制修饰public、protected、privateSystem.out.print("\t"+Modifier.toString(constructor.getModifiers()));//输出名称System.out.println(""+constructor.getName()+"();");}//获得成员函数Method[]methods=c.getDeclaredMethods();for(Methodmethod:methods){System.out.print("\t"+Modifier.toString(method.getModifiers()))System.out.print(""+method.getReturnType().getName()+"");System.out.println(method.getName()+"();");}动态生成对象如果要动态加载并生成对象,则须指定初始参数要先指定参数类型取得构造方法使用Constructor的newInstance()并指定参数后生成实例动态生成对象18执行方法C