当前位置: 首页 > news >正文

闵行做网站厦门响应式网站制作

闵行做网站,厦门响应式网站制作,如何自己创造网站,网站贸易表格怎么做反射 文章目录 基本使用反射机制java程序在计算机有三个阶段反射相关的主要类 反射调用优化Class类的常用方法获取Class对象的6种方式哪些类型有Class对象类加载类加载时机类加载过程图 通过反射获取类的结构信息第一组#xff1a;java.lang.Class类第二组#xff1a;java.la… 反射 文章目录 基本使用反射机制java程序在计算机有三个阶段反射相关的主要类 反射调用优化Class类的常用方法获取Class对象的6种方式哪些类型有Class对象类加载类加载时机类加载过程图 通过反射获取类的结构信息第一组java.lang.Class类第二组java.lang.reflect.Filed类第三组java.lang.reflect.Method类第四组java.lang.reflect.Constructor类 通过反射创建对象通过反射访问类中的成员 基本使用 Properties prop new Properties(); prop.load(new FileInputStream(src\\re.properties));String classfullpath prop.getProperty(classfullpath).toString(); String method prop.getProperty(method).toString(); System.out.println(classfullpath classfullpath); System.out.println(method method);// 加载类返回Class类型的对象cls Class cls Class.forName(classfullpath); // 通过 cls 得到你加载的类 com.hspedu.Cat 的对象实例 Object obj cls.newInstance(); System.out.println(o的运行类型 obj.getClass()); // 通过cls得到你加载的类 com.hspedu.Cat 的 methodName hi 的对象方法 // 即: 在反射中可以把方法视为对象(万物皆对象) Method method1 cls.getMethod(method); // 通过method1 调用方法即通过方法对象实现调用方法 method1.invoke(obj); // 传统方法 对象.方法(),反射机制 方法.invoke(对象)反射机制 1.反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息化比如成员变量构造器成员方法等等)并能操作对象的属性及方法。反射在设计模式和框架底层都会用到 2.加载完类之后在堆中就产生了一个Class类型的对象一个类只有一个Class对象 这个对象包含了类的完整结构信息。通过这个对象得到类的结构。这个对象就像一面镜子透过这个镜子看到类的结构所以形象的称之为反射 java程序在计算机有三个阶段 反射相关的主要类 1.java.lang.Class:代表一个类Class对象表示某个类加载后在堆中的对像 2.java.lang.reflect.Method:代表类的方法 3.java.lang.reflect…Field:代表类的成损变量 4.java.lang.reflect…Constructor::代表类的构造方法 这些类在java.lang.reflection 反射调用优化 .setAccessible(true); // 关闭访问检查, 大约提升30%速度Class类的常用方法 获取Class对象的6种方式 1.编译阶段 Class.forName() 应用场景多用于配置文件读取类全路径加载类. 2.加载阶段 类.class 应用场景多用于参数传递比如通过反射得到对应构造器对象 3.Runtime运行阶段 对象.getClass() 4.通过类加载器得到一个Class对象 5.基本数据(int,char,boolean,float,double,byte,long,short)按如下方式得到Class类对象 6.基本数据类型对应的包装类可以通过.type得到Class类对像 哪些类型有Class对象 如下类型有Class对象 1.外部类成员内部类静态内部类局部内部类匿名内部类 2.interface:接口 3.数组 4.enum:枚举 5.annotation: 注解 6.基本数据类型 7.void 类加载 静态加载编译时加载相关的类如果没有则报错依赖性太强 动态加载运行时加载需要的类如果运行时不用该类即使不存在该类则不报错降低了依赖性 类加载时机 1.当创建对象时(new) // 静态加载 2.当子类被加载时,父类也加载 // 静态加载 3.调用类中的静态成员时 // 静态加载 4.通过反射 // 动态加载 类加载过程图 通过反射获取类的结构信息 第一组java.lang.Class类 1.getName:获取全类名 2.getSimpleName:获取简单类名 3.getFields:获取所有public修饰的属性包含本类以及父类的 4.getDeclaredFields:获取本类中所有属性 5.getMethods:获取所有public修饰的方法包含本类以及父类的 6.getDeclaredMethods:获取本类中所有方法 7.getConstructors::获取本类所有public修饰的构造器 8.getDeclaredConstructors获取本类中所有构造器 9.getPackage:以Package形式返回包信息 10.getSuperClass:以Class形式返回父类信息 11.getInterfaces:以Class形式返回接口信息 12.getAnnotations:以Annotationl形式返回注解信息 第二组java.lang.reflect.Filed类 1.getModifiers:以int形式返回修饰符 [说明默认修饰符是0public是1private是2protected是4 static是8final是16]public(1)static(8)9 2.getType:以Class形式返回类型 3.getName:返回属性名 第三组java.lang.reflect.Method类 1.getModifiers:以int形式返回修饰符 [说明默认修饰符是0public是1private是2protected是4 static是8final是16] 2.getReturnType:以Class形式获取返回类型 3.getName:返回方法名 4.getParameterTypes:以Class返回参数类型数组 第四组java.lang.reflect.Constructor类 1.getModifiers:以int形式返回修饰符 2.getName:返回构造器名全类名 3.getParameterTypes:以Class[]返回参数类型数组 通过反射创建对象 1.方式一调用类中的public修饰的无参构造器 2.方式二调用类中的指定构造器 3.Class类相关方法 newInstance调用类中的无参构造器获取对应类的对象 getConstructor(Class.clazz):根据参数列表获取对应的构造器对象 getDecalaredConstructor(Class.clazz):根据参数列表获取对应的构造器对象 4.Constructor类相关方法 setAccessible:暴破 newlnstance(Object…obj):调用构造器 Class? userClass Class.forName(com.hspedu.refilection.User);// 获取User类的无参构造方法 Constructor? constructor userClass.getConstructor(); // 使用无参构造方法创建User对象 Object o constructor.newInstance(); // 打印创建的User对象 System.out.println(o);// 获取User类的带有一个String参数的构造方法 Constructor? constructor1 userClass.getConstructor(String.class); // 使用带有一个String参数的构造方法创建User对象参数为hsp Object o1 constructor1.newInstance(hsp); // 打印创建的User对象 System.out.println(o1);// 获取User类的私有构造方法该方法带有两个参数String和int Constructor? constructor2 userClass.getDeclaredConstructor(String.class, int.class); // 设置私有构造方法为可访问 constructor2.setAccessible(true); // 使用私有构造方法创建User对象参数为小明和20 Object o2 constructor2.newInstance(小明, 20); // 打印创建的User对象 System.out.println(o2);通过反射访问类中的成员 访问属性 1.根据属性名获取Field对象 Field fclazz对象.getDeclaredField(属性名); 2.暴破f.setAccessible(true); //f是Field 3.访问 f.set(o,值); syso(f.get(o)); 4.如果是静态属性则set和get中的参数o,可以写成null 访问方法 1.根据方法名和参数列表获取Method方法对象 Method mclazz.getDeclaredMethod(方法名XX.class); //得到本类的所有方法 2.获取对象Object o clazz.newlnstance(); 3.暴破m.setAccessible(true); 4.访问Object returnValuem.invoke(o,实参列表) 5.注意如果是静态方法则invoke的参数o,可以写成null!
http://www.w-s-a.com/news/915014/

相关文章:

  • 北辰苏州网站建设抖音代运营投诉平台
  • 安徽住房与城乡建设部网站如何新建站点
  • 企业网站开发的感想网站开发公司所需投入资源
  • 如何拿网站后台账号wordpress 电影下载站源码
  • 公司网站建设方案书安卓应用市场免费下载安装
  • phpmysql网站设计建设好一个网站需要
  • 自己做的网站能被别人看到吗idea怎么做网页
  • 燕莎网站建设互联网排名前十的公司2021
  • 微软云怎么做网站微商城和小程序区别
  • 哈尔滨建站的系统网站到首页排名
  • 运动网站开发的需求分析南通市住房和城乡建设局网站
  • 佘山做网站谷歌云做网站
  • 免费发布信息网站大全666做p2p网站费用
  • 北京 网站建设咨询顾问公司网络公司有几家
  • 设计类网站如何用ps做网站首页
  • 品牌网站建设的关键事项设计网有哪些
  • 网站没收录徐州建设工程审图中心网站
  • 网站建设记账做什么科目erp系统有哪些软件
  • 泰拳图片做网站用哪里有做空包网站的
  • 查外链网站重庆做网站微信的公司
  • 有没有外包活的网站如何做网站快捷键的元素
  • 公司网站赏析网站制作2019趋势
  • 企业进行网站建设的方式有( )推广引流违法吗
  • 按营销型网站要求重做网站 费用点金网站建设
  • 深圳做网站互联网服务
  • 网站sem托管wordpress安装无法连接数据库
  • 深圳网站建设开发公司哪家好微信小程序商家入口
  • 江门站排名优化建立什么网站赚钱
  • 科普文章在那个网站做招聘网站代做
  • 监控设备东莞网站建设游戏网站域名