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

学校网站维护楚天网站建设合同

学校网站维护,楚天网站建设合同,找私人做网站程序费用,网站建设期中考试题Java 反射#xff08;Reflection#xff09; Java 反射#xff08;Reflection#xff09;是一个强大的特性#xff0c;它允许程序在运行时查询、访问和修改类、接口、字段和方法的信息。反射提供了一种动态地操作类的能力#xff0c;这在很多框架和库中被广泛使用#…Java 反射Reflection Java 反射Reflection是一个强大的特性它允许程序在运行时查询、访问和修改类、接口、字段和方法的信息。反射提供了一种动态地操作类的能力这在很多框架和库中被广泛使用例如Spring框架的依赖注入。 反射 API Java 的反射 API 提供了一系列的类和接口来操作 Class 对象。主要的类包括 java.lang.Class表示类的对象。提供了方法来获取类的字段、方法、构造函数等。java.lang.reflect.Field表示类的字段属性。提供了访问和修改字段的能力。java.lang.reflect.Method表示类的方法。提供了调用方法的能力。java.lang.reflect.Constructor表示类的构造函数。提供了创建对象的能力。 工作流程 获取 Class 对象首先获取目标类的 Class 对象。获取成员信息通过 Class 对象可以获取类的字段、方法、构造函数等信息。操作成员通过反射 API 可以读取和修改字段的值、调用方法以及创建对象。 以下是 Java 反射的基本使用方式及其常见应用。 1. 获取 Class 对象 每个类在 JVM 中都有一个与之相关的 Class 对象。可以通过以下方式获取 Class 对象 通过类字面量 Class? clazz String.class;通过对象实例 String str Hello; Class? clazz str.getClass();通过 Class.forName() 方法 Class? clazz Class.forName(java.lang.String);2. 创建对象 可以使用反射动态创建对象 Class? clazz Class.forName(java.lang.String); Object obj clazz.getDeclaredConstructor().newInstance();3. 访问字段 可以通过反射访问和修改类的字段 Class? clazz Person.class; Field field clazz.getDeclaredField(name); field.setAccessible(true); // 如果字段是私有的需要设置为可访问 Object value field.get(personInstance); // 获取字段值 field.set(personInstance, New Name); // 设置字段值4. 调用方法 可以通过反射调用类的方法 Class? clazz Person.class; Method method clazz.getMethod(sayHello); method.invoke(personInstance);Method methodWithArgs clazz.getMethod(greet, String.class); methodWithArgs.invoke(personInstance, World);5. 获取构造函数 可以使用反射获取和调用构造函数 Class? clazz Person.class; Constructor? constructor clazz.getConstructor(String.class, int.class); Object obj constructor.newInstance(John, 30);6. 获取接口和父类 可以使用反射获取类实现的接口和父类 Class? clazz Person.class;// 获取所有接口 Class?[] interfaces clazz.getInterfaces(); for (Class? i : interfaces) {System.out.println(Interface: i.getName()); }// 获取父类 Class? superClass clazz.getSuperclass(); System.out.println(Superclass: superClass.getName());以下是一个完整的示例展示了如何使用反射来创建对象、访问字段和调用方法 实例 **import** java.lang.reflect.Constructor; **import** java.lang.reflect.Field; **import** java.lang.reflect.Method;**public** **class** ReflectionExample {**public** **static** **void** main(String[] args) **throws** Exception {*// 获取 Class 对象*Class? clazz Person.**class**;*// 创建对象*Constructor? constructor clazz.getConstructor(String.**class**, **int**.**class**);Object person constructor.newInstance(John, 30);*// 访问字段*Field nameField clazz.getDeclaredField(name);nameField.setAccessible(**true**);System.out.println(Name: nameField.get(person));*// 修改字段*nameField.set(person, Doe);System.out.println(Updated Name: nameField.get(person));*// 调用方法*Method greetMethod clazz.getMethod(greet, String.**class**);greetMethod.invoke(person, World);} }**class** Person {**private** String name;**private** **int** age;**public** Person(String name, **int** age) {**this**.name name;**this**.age age;}**public** **void** greet(String message) {System.out.println(name says: message);} }编译执行以上代码输出结果为 Name: John Updated Name: Doe Doe says: Worldjava.lang.reflect java.lang.reflect 是 Java 反射机制的核心包提供了操作类及其成员字段、方法、构造函数等的类和接口。通过这些 API开发者可以在运行时动态地查询和修改类的结构。 以下是 java.lang.reflect 包中的主要类和接口的详细介绍 1. Class 类 功能表示类的对象提供了获取类信息的方法如字段、方法、构造函数等。 主要方法 getFields()获取所有公共字段。getDeclaredFields()获取所有声明的字段包括私有字段。getMethods()获取所有公共方法。getDeclaredMethods()获取所有声明的方法包括私有方法。getConstructors()获取所有公共构造函数。getDeclaredConstructors()获取所有声明的构造函数包括私有构造函数。getSuperclass()获取类的父类。getInterfaces()获取类实现的所有接口。 2. Field 类 功能表示类的字段属性提供了访问和修改字段值的方法。 主要方法 get(Object obj)获取指定对象的字段值。set(Object obj, Object value)设置指定对象的字段值。getType()获取字段的数据类型。getModifiers()获取字段的修饰符如 public、private。 3. Method 类 功能表示类的方法提供了调用方法的能力。 主要方法 invoke(Object obj, Object... args)调用指定对象的方法。getReturnType()获取方法的返回类型。getParameterTypes()获取方法的参数类型。getModifiers()获取方法的修饰符如 public、private。 4. Constructor 类 功能表示类的构造函数提供了创建对象的能力。 主要方法 newInstance(Object... initargs)创建一个新实例使用指定的构造函数参数。getParameterTypes()获取构造函数的参数类型。getModifiers()获取构造函数的修饰符如 public、private。 示例代码 以下是使用 java.lang.reflect 包进行反射操作的示例 实例 **import** java.lang.reflect.Field; **import** java.lang.reflect.Method; **import** java.lang.reflect.Constructor;**public** **class** ReflectionExample {**public** **static** **void** main(String[] args) **throws** Exception {*// 获取 Class 对象*Class? clazz Car.**class**;​ *// 创建 Car 对象* ​ Constructor? constructor clazz.getConstructor(String.**class**, **int**.**class**); ​ Object car constructor.newInstance(Toyota, 2020);​ *// 访问和修改字段* ​ Field modelField clazz.getDeclaredField(model); ​ Field yearField clazz.getDeclaredField(year); ​ ​ *// 设置字段为可访问如果字段是私有的* ​ modelField.setAccessible(**true**); ​ yearField.setAccessible(**true**); ​ ​ *// 打印原始字段值* ​ System.out.println(Original Model: modelField.get(car)); ​ System.out.println(Original Year: yearField.get(car)); ​ ​ *// 修改字段值* ​ modelField.set(car, Honda); ​ yearField.set(car, 2024); ​ ​ *// 打印修改后的字段值* ​ System.out.println(Updated Model: modelField.get(car)); ​ System.out.println(Updated Year: yearField.get(car)); ​ ​ *// 调用方法* ​ Method startMethod clazz.getMethod(start); ​ startMethod.invoke(car);} }**class** Car {**private** String model;**private** **int** year;**public** Car(String model, **int** year) {**this**.model model;**this**.year year;}**public** **void** start() {System.out.println(The model car of year year is starting.);} }编译执行以上代码输出结果为 Original Model: Toyota Original Year: 2020 Updated Model: Honda Updated Year: 2024 The Honda car of year 2024 is starting. r;}**public** **void** start() {System.out.println(The model car of year year is starting.);} }编译执行以上代码输出结果为 Original Model: Toyota Original Year: 2020 Updated Model: Honda Updated Year: 2024 The Honda car of year 2024 is starting.
http://www.hkea.cn/news/14475328/

相关文章:

  • h5 php网站开发wordpress页面源代码
  • 做led灯网站有哪些呢网站精神文件建设专栏
  • 可以做渗透的网站电商静态网页模板
  • 关于做网站的简洁的中文wordpress模板
  • 建设部网站查造价师wordpress page post
  • 网站建设网站需求分析报告功能移动商城积分兑换
  • 南京网站建设公司哪家好渭南网站建设网站排名优化
  • 电信宽带做网站服务器吗长春市经济开发区人才网
  • 网站建设 排名宝下拉wordpress dplayer使用
  • 网站怎么做百度认证吗百度网站验证
  • 三明网站建设泰州企业网站建站模板
  • 外国风格网站建设用途软件职业培训
  • 济南建站公司模板江西人才网
  • 河南网站建设价位微商做网站
  • 水利建筑工程网站天元建设集团有限公司中标情况分析
  • 做别人一样的网站吗松江网站建设多少钱
  • 宜兴市建设局网站深圳深度网站建设
  • 免费建站的方法流程医疗网站建设网站
  • 建设局网站招聘社区网站如何做内容运营
  • 做视频网站服务器开发平台的公司
  • 刚开今天新开传奇网站网站如何做好内链
  • 运城网站建设哪个好青岛优化网站关键词
  • 网站模板库免费网站活动页面设计
  • 福州牛蛙 网站建设专家库 网站 建设方案
  • 程序员给女朋友做的网站wordpress 自定义投稿
  • 公司网站的建站要点重庆网站推广联系方式
  • 杭州哪家网站建设好市场营销论文4000字
  • 怎样在工商局网站做公示尚城装修公司官网
  • 如何自己建网站服务器怎么申请一个域名
  • 自己做的博客网站吗今天发生的重大新闻事件