欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Java动态机制-反射技术.ppt

    • 资源ID:5436037       资源大小:219.99KB        全文页数:14页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java动态机制-反射技术.ppt

    Java动态机制-反射技术,Java是动态语言吗?,一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C+,Java,C#不是动态语言。尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制:Reflection。,Reflection 是Java被视为动态(或准动态)语言的一个关键性质Reflection的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起(调用)其methods。这种“看透class”的能力(the ability of the program to examine itself)被称为introspection(内省、内观、反省),Java是动态语言吗?,1.Retrieving Class Objects,获取一个Class对象(metadata)1、从对象的实例获取。Class c=mystery.getClass();/(return Class)2、从子类的实例获取 TextField t=new TextField();Class c=t.getClass();Class s=c.getSuperclass();3、知道类名,则可以把.class加入到名字之后来获取。Class c=;4、如果类名在编译时是未知的,则可以使用Class.forName()方法来获取.Class c=Class.forName(classString);,2.Getting the Class Name,获取类名称 import java.awt.*;class SampleName public static void main(String args)Button b=new Button();printName(b);static void printName(Object o)Class c=o.getClass();String s=c.getName();System.out.println(s);,3.Discovering Class Modifiers,检索修饰符 1、通过getModifiers()方法获取一个整型标识值。2、通过对象的isPublic,isAbstract,和 isFinal方法判断此值.例如:public static void printModifiers(Object o)Class c=o.getClass();int m=c.getModifiers();if(Modifier.isPublic(m)System.out.println(public);if(Modifier.isAbstract(m)System.out.println(abstract);if(Modifier.isFinal(m)System.out.println(final);,4.Finding Superclasses,检索父类class SampleSuper public static void main(String args)Button b=new Button();printSuperclasses(b);static void printSuperclasses(Object o)Class subclass=o.getClass();Class superclass=subclass.getSuperclass();while(superclass!=null)String className=superclass.getName();System.out.println(className);subclass=superclass;superclass=subclass.getSuperclass();,5.Identifying the Interfaces Implemented by a Class,检索指定类实现的接口 class SampleInterface public static void main(String args)try RandomAccessFile r=new RandomAccessFile(myfile,r);printInterfaceNames(r);catch(IOException e)System.out.println(e);static void printInterfaceNames(Object o)Class c=o.getClass();Class theInterfaces=c.getInterfaces();for(int i=0;i theInterfaces.length;i+)String interfaceName=theInterfacesi.getName();System.out.println(interfaceName);,6.Examining Interfaces,判定一个类是不是接口 class SampleCheckInterface public static void main(String args)Class thread=Thread.class;Class runnable=Runnable.class;verifyInterface(thread);verifyInterface(runnable);static void verifyInterface(Class c)String name=c.getName();if(c.isInterface()System.out.println(name+is an interface.);else System.out.println(name+is a class.);,找出指定类所有的域成员 public static void main(String args)GridBagConstraints g=new GridBagConstraints();printFieldNames(g);static void printFieldNames(Object o)Class c=o.getClass();Field publicFields=c.getFields();for(int i=0;i publicFields.length;i+)String fieldName=publicFieldsi.getName();Class typeClass=publicFieldsi.getType();String fieldType=typeClass.getName();System.out.println(Name:+fieldName+,Type:+fieldType);,7、Identifying Class Fields,8.Discovering Class Constructors,检索指定类的构造函数 当创建一个类的实例时,会调用相应的检造方法。每一个构造方法可以用类Constructor来描述,包括名称,修饰符,参数类型(Class),和异常列表。可以通过一个Class的getConstructors方法获取到该类的Constructor数组。class SampleConstructor public static void main(String args)Rectangle r=new Rectangle();showConstructors(r);static void showConstructors(Object o)Class c=o.getClass();Constructor theConstructors=c.getConstructors();for(int i=0;i theConstructors.length;i+)();Class parameterTypes=theConstructorsi.getParameterTypes();for(int k=0;k parameterTypes.length;k+)String parameterString=parameterTypesk.getName();System.out.print(parameterString+);();,9.Obtaining Method Information,检索方法 通过getMethods检索包含所有Method的数组,进而得到该方法的返回类型,修饰符,方法名称,参数列表 步骤:a.指定类的Class Object b.getMethods()获取Method对象 c,遍历该数组对象,9.Obtaining Method Information,class SampleMethod public static void main(String args)Polygon p=new Polygon();showMethods(p);static void showMethods(Object o)Class c=o.getClass();Method theMethods=c.getMethods();for(int i=0;i theMethods.length;i+)String methodString=theMethodsi.getName();System.out.println(Name:+methodString);String returnString=theMethodsi.getReturnType().getName();(Return Type:+returnString);Class parameterTypes=theMethodsi.getParameterTypes();(Parameter Types:);for(int k=0;k parameterTypes.length;k+)String parameterString=parameterTypesk.getName();(+parameterString);();,10、invoke methods in runtime,运行时调用methods,

    注意事项

    本文(Java动态机制-反射技术.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开