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

做集团网站应注意什么建站论坛

做集团网站应注意什么,建站论坛,网站建设公司如何推广,城乡建设部网站施工员证书查询Java反射 一.什么是反射 我们使用的一些像框架#xff0c;tomcat#xff0c;或者一些其他的组件(jackson 对象–json)。他们可以做到给他什么类名#xff0c;就可以创建给定类的对象#xff0c;并调用该对象的方法和属性。这是如何做到的#xff1f; 当他们加载我们…Java反射 一.什么是反射 我们使用的一些像框架tomcat或者一些其他的组件(jackson 对象–json)。他们可以做到给他什么类名就可以创建给定类的对象并调用该对象的方法和属性。这是如何做到的 当他们加载我们本地的类时需要先创建对象然后将查询到的结果封装到创建的对象中(调用setxxx()方法调用xxx属性)但问题是框架只知道Student类的地址它是如何使用类的 框架只能根据配置文件中配置的类的地址决定要创建并操作哪个类 select idfindStudents parameterTypeStudent resultTypexx.xx.xx.Student而且框架要做到可以处理任何类只需要一套程序来处理这是怎么办到的 这时候我们就需要反射机制只用一套程序来解决框架处理任何类的问题。 反射 JAVA反射机制是再运行状态中对于任意一个类都能知道这个类的所有属性和方法对于任意一个对西昂都能调用它的任意一个方法和属性这种动态获取信息以及动态调用对西昂的方法的功能称为java语言的反射机制。它的作用就是动态获取类的信息。 二.Class类 反射机制当中有一个类叫ClassClass类的类表示正在运行的Java应用程序中的类和接口。 一旦class文件被加载到内存就会为其创建一个Class对象任何类被使用时都会创建一个Class对象。 Class类是Java反射机制的基础可以通过获取类的Class类可以得到一个类的基本信息。 那么如何获得类的Class对象 方式1 String sModel.User;Class c1Class.forName(s); //把给定地址的类进行了加载为其创建Class对象Class c2Class.forName(s); //把给定地址的类进行了加载为其创建Class对象System.out.println(c1);System.out.println(c2);System.out.println(c1c2); //true:c1和c2表示的是同一个//通过user的Class对象就看可以获得User类的基本信息方式2 Class c3 User.class;方式3 User usernew User();Class c4user.getClass(); //通过已知的对象中的getClass() 获得该对象类的Class对象那么成功获取对象类的Class对象后如何取得其中相关信息呢 1.创建对象 //通过Class类的对象来创建User对象//newInstance调用默认无参构造方法所以如果类中有有参构造方法还需要单独把无参构造方法也写出来否则IllegalAccessExceptionObject objectUserc.newInstance();2.获取类中的构造方法信息 //类中要确保有无参构造方法否则异常NoSuchMethodExceptionConstructor constructor1c.getConstructor(); //获得类中指定的公共public构造方法Object objectUser constructor1.newInstance(); //通过构造方法中newInstance创建对象Constructor constructor2c.getDeclaredConstructor(); //获得类中的指定沟构造方法包括私有Constructor constructor3c.getConstructor(String.class,String.class); //获得公共的有参构造方法Object objectUser1constructor3.newInstance(用户1,密码1); //创建对象并为对象属性复制Constructor[] constructorsc.getConstructors(); //获得所有的公共的构造方法c.getDeclaredConstructors(); //获得包括私有的所有的构造方法 小知识点java创建对象三种方式 (1)new (2)反射机制的newInsteance (3)序列化与反序列化读取文件中的类 3.获得成员变量 String sModel.User;Class cClass.forName(s); //获得类的Class对象Object objectUserc.newInstance(); //创建User对象//获得类中的成员变量//获得类中指定的公共的属性把属性封装到一个Field对象// Field userNameField c.getField(userName);Field userNameField c.getDeclaredField(userName); //私有成员变量//获得所有的属性Field [] fieldsc.getFields();//包括私有Field [] fields1c.getDeclaredFields();//用HashMap模拟查询到的数据HashMapString,String mapnew HashMap();map.put(userName,admin);map.put(password,123456);//循环所有的属性为属性赋值for (Field f: fields) {//打破了封装性慎用建议使用getset方法因为可能setget方法中还有逻辑语句f.setAccessible(true); //设置可以访问私有属性f.set(objectUser,map.get(f.getName()));}4.获得方法 String sModel.User;Class cClass.forName(s); //获得类的Class对象Object objectUserc.newInstance(); //创建User对象Method eat1c.getMethod(eat);//执行objectUser对象中的无参eat方法——invoke调用eat1.invoke(objectUser);Method eat2c.getMethod(eat,String.class);eat2.invoke(objectUser,参数);//包括继承的方法Method[] methods1c.getMethods();//获得本类中所有的成员方法包括私有Method[] methods2c.getDeclaredMethods();System.out.println(methods1.length); //15System.out.println(methods2.length); //7Field[] fieldsc.getDeclaredFields(); //获得所有属性for (Field f:fields) { //循环拿到每一个属性//通过属性名 匹配到getset方法String setsetString.valueOf(f.getName().charAt(0)).toUpperCase()f.getName().substring(1);Method setMethodc.getMethod(set,String.class); //通过set方法名获得set方法setMethod.invoke(objectUser,用户和密码); //调用set方法}
http://www.tj-hxxt.cn/news/141681.html

相关文章:

  • 论坛网站平台建设方案东莞优速网站建设推广罗裕
  • 专业网站建设联系我做动作你来猜的网站
  • 网站地图灰色效果的怎么做的wordpress怎么升级
  • app成本seo权威入门教程
  • 网站 备案 注销巴顿品牌设计公司
  • 怎样开发手机网站建设wordpress怎么改标题
  • 深圳做网站公司多少钱官方网站旗舰店
  • 建设网站是否需要一个主机网站建设市场介绍
  • 郑州网站建设找汉狮苏州网站制作 网站
  • 网站建设教材wordpress mysql备份
  • 湖南网站建设网网站和平台有什么区别
  • 网站开发的背景和意义站牛网
  • 临沂专门做网站的欧 美 做 爱 视频网站
  • 动易网站建设实训报告上海到北京物流
  • 品牌网站策划书怎么用手机做网站平台
  • 湖南建设厅网站不良记录传奇简单网站模板
  • 天威虎建设集团官方网站轻量应用服务器wordpress目录
  • 寿阳网站建设网站建设公司电话
  • 商城网站设计说明书thinkphp做的网站源码
  • 没有网站如何做SEO推广有用吗四川省人事考试网
  • 汕头网站推广公司深圳防疫隔离政策
  • 免费高清网站在线观看关于设计的网站
  • 有关做聚合物电池公司的网站弄个小程序要多少钱
  • 泸州工投建设集团有限公司网站重庆网站空间主机评价
  • 网站做支付借口多少钱全网最低价业务网站
  • 怎么在一起做网站上拿货网站数字签名
  • 怎样为公司做网站网站设计网站建设网站制作
  • 龙口网站制作价格管理系统admin入口
  • 警告欺骗网站模板有哪些专门做展会创意的网站
  • 专业制作网站 郑网站建站制作价格