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

龙元建设网站深圳宝安区松岗

龙元建设网站,深圳宝安区松岗,wordpress post title,品牌建设助力乡村振兴我们平常创建类的实例并调用类中成员需要建立在一个前提下#xff0c;就是已经知道类名和类中成员的信息#xff0c;灵活性大大降低。甚至在一些项目中还需要修改源码来满足使用条件#xff0c;大大降低了操作的灵活性。Java 反射#xff08;Reflection#xff09;是 Java…我们平常创建类的实例并调用类中成员需要建立在一个前提下就是已经知道类名和类中成员的信息灵活性大大降低。甚至在一些项目中还需要修改源码来满足使用条件大大降低了操作的灵活性。Java 反射Reflection是 Java 语言的一个重要特性它允许程序在运行时而不是编译时获取类中成员并且可以动态地操作这些类的成员。在讲反射之前我们先聊一聊反射机制中必不可少的一环配置文件。我需要提前将我的类名成员名填写到配置文件中去。这样在调用时就可以直接读取配置文件中的信息。相较于读取普通文件配置文件的读取和调用更加简单。一、读取配置文件1.创建配置文件在指定的路径下通常我放在src目录下不为别的就因为路径名简单创建一个以“.properties”为结尾的File文件普通的键值对形式作为配置文件。2.填写配置文件内容以“键值”的形式填写不必添加空格和引号调用时通过键的字符串形式调用后面会举例说明。3.创建配置文件对象首先new一个配置文件的对象使用load方法将配置文件中的内容读取到配置文件对象中。load方法提供了两种重载既可以通过字节流输入也可以通过字符流输入。推荐使用字节流输入配置文件通常为全英文形式字节流输入效率高。4.获取配置文件中的内容Properties类提供了一种getProperty(键)方法来获取配置文件中的信息需要在方法中写入一个键就会返回一个String类型键对应的值。这个String类型的值就是我们要从配置文件中拿到的值。Exam、我提前在src目录下创建了一个名为“p.properties”的配置文件并提前写好键值对来表示需要需要反射文件的路径、属性和方法。路径表示com.reflectNewEdu包下的名为“reflectEdu”的文件我需要反射这个文件中的成员。 //配置文件的内容 //路径 className com.reflectNewEdu.reflectEdu //属性 ObjName str //方法 methodName printContent methodName1 printSomeExam、在reflectEdu文件中需要写一些成员来帮助我们进行实验。 public class reflectEdu {//分别一个public和一个private属性public int num 123;private String str 字符串;//方法public void printContent() {System.out.println(输出内容);}private void printSome() {System.out.println(输出一些东西);} }Exam、创建一个Test类在Test类中填写main方法具体实现反射二、获取类对象main函数中1.首先按照上面的步骤创建配置文件对象并使用字节流加载配置文件进配置文件对象中。 Properties properties new Properties(); properties.load(new FileReader(src/p.properties));2.为了绕过对象阶段创建类对象Class.forName(类全名)提供了一种在硬盘阶段获取类中成员的方法。Class.forName(类全名)  的核心作用是通过类的全限定名让JVM加载这个类并返回一个代表该类“模板”的 Class  对象。此时仅完成了“类的加载”并没有创建任何属于这个类的具体对象就像拿到了一张“汽车设计图纸”但还没造出真正能开的汽车。该方法需要写入一个String类型的类全名我们通过getProperty(键)方法从配置文件中拿到这个类全名。Class.forName()方法返回一个Class类型的对象这是一个类对象。类对象并不是哪个类的实例但可以通过这个类对象下的方法获取到类中的成员甚至是获取类的实例。还是挺抽象的 Class class0 Class.forName(properties.getProperty(className));三、获取类对象中的成员一、属性返回Field类型需要import java.lang.reflect.Field;        1.获取当前类里所有属性getDeclaredFields(); 返回数组        2.通过属性名获取属性getDeclaredField(属性名);        3.获取所有公共类型属性getFields();返回数组        4.获取公共类型中指定的属性getField(属性名);        5.设置对象的属性属性对象.set(对象名属性值)        当属性被private修饰无法被调用时可以使用类对象名.setAccessible(true); 来进行暴力反射。二、方法返回Method类型需要import java.lang.reflect.Method;        1.获取类里所有方法getDeclaredMethods();返回数组        2.通过方法名获取方法getDeclaredMethod(方法名);        3.获取所有公共类型方法getMethods();返回数组        4.获取公共类型中指定的方法getMethod(方法名);        5.运行指定的方法方法对象.invoke(对象名, 参数);         第一个为对象名第二个为参数名如果没有参数可以不用输入允许暴力反射。三、构造方法返回Constructor类型需要import java.lang.reflect.Constructor;        1.获取类里所有构造方法getDeclaredConstructors();返回数组        2.获取指定的无参构造方法getDeclaredConstructor();        3.获取指定的带有参数的构造方法举例带有String和int类型的两个参数的构造方法getDeclaredConstructor(String.class,int.class);        4.获取所有公共类型的构造方法getConstructors();返回数组        5.获取公共类型中指定的一个方法有参或无参getConstructor();        6.执行无参构造方法Object 新变量名 构造方法对象/类对象名.newInstance(); 相当于Object obj new ();         7.执行有参的构造方法Object 新变量名 构造方法对象.newInstance(参数);需要注意我标蓝的地方都需要传入一个类对象那么如何获取类的实例对象呢四、获取类的实例对象1.通过构造方法获取我们已经拿到指向我们需要反射的类的对象了直接通过getDeclaredConstructor()方法获取一个构造方法我这里是无参的再执行构造方法中的newInstance()方法不就行了嘛。代码 Constructor con class0.getConstructor(); Object object con.newInstance();注我们提前无法预测给类起的名字是什么所以需要用它们共同的父类Object对象来接受。2.通过类对象获取对类对象直接使用newInstance()方法这样无需知道类名就可以创建类的实例对象啦。 Object object class0.newInstance();有了类的实例对象我们就可以使用上面标蓝的方法了比如调用类中的方法等。由此反射的整个过程就实现完了如果有什么地方不明白的话可以私信讨论( o o)/。
http://www.pierceye.com/news/396485/

相关文章:

  • 自己有网站 做app吗深圳罗湖企业网站推广
  • 廊坊建设局网站6阿里云虚拟主机网站
  • 设计一个电商网站西安seo盐城
  • 上海网站公司建设网页设计网站欣赏
  • 平台网站如何做推广1280的界面网站做多宽
  • 男男做爰视频网站微信扫码点餐小程序怎么做
  • 哈尔滨做网站的价格如何利用wordpress搭建一个发卡网
  • 商会建设网站说明网站建设属于技术活吗
  • 免费申请手机网站公司画册模板免费下载
  • 网站建设策划做一个卖货的app要多少钱
  • 泉州网站平台建设公司网站服务器出错了怎么办
  • 佛山网站设计专业手机网站模板设计软件
  • 顺德网站优化公司wordpress 去广告
  • 自己建企业网站怎么建免费大数据查询
  • 短视频素材免费下载网站江西省城乡建设厅网站
  • 西安做网站公司工资wordpress 导航 分类
  • 网站建设免费教程网页设计图片高清
  • 网站后台源代码东直门小学的网站建设
  • 无锡建设局评职称网站分析 网站
  • 宜昌需要做网站建设的公司python做调查问卷网站
  • 乐陵森大最好的seo优化公司
  • php网站开发实施方案福建建筑信息平台
  • 怎么写公司网站的文案建设网站技术公司简介
  • 陕西做网站的wordpress增加变量
  • 莒南县建设工程网站网站认证方式有几种
  • 举报网站建设自查报告相同网站名
  • 网站建设网站建设公司北京logo设计制作
  • 福州市交通建设集团有限公司 网站全国国家公示系统官网
  • 郑州网站建设蝶动2023年专升本最新政策
  • 江苏网站推广网络企业宣传画册设计公司