Java 17 Reflection 反射 Field 篇
2022-08-04 18:19:25
这篇来说说反掷中剩下的两个常识点的此中之一,分辨是 Field (属性,范围,字段)和 Method (措施或函数)。
对付 Field 供应相合类或接口的单个属性的讯息以及对属性的动态拜候。 对付反射的属性而言, 可能是类的属性,类的静态属性,以及类成员实例。
念要拜候属性,就务必先有操作的对象, 这里可能参考反射常识点 Class 篇。不周密说这个, 至直接演示 Field 的应用。
对付 Field 中的措施要紧包罗三品种型, 一种是注释相干的,此外是取得分别类型的根本类型封装类型以及扶植对应的值。第三种即是根本的操作。取得属性的名称,以及取得属性对应的类对象,类型等操作讯息。
既然是字段属性,就必然有对应的值。事实变量只是一个标识符。 最终照样为了取得值。这里演示假设获取对象的值。
遵照 Field 的 getType 取得类型的字符串,然后遵照类型取得对应的数据。这里只是为了演示这些取得封装类型数据的措施。
isSynthetic():假设此字段是合成字段,则返回 true;不然返回 false。 演示成果如下。
扶植反射对象的可拜候权,当值为 true 时,反射对象正在应用时会打消对 Java 发言拜候独揽的检讨。值为 false 时,外现反射对象正在应用时应检讨 Java 发言拜候独揽,而且会正在类中描画中会阐明变更。
为 true 时的可拜候象征禁止 Java 发言拜候独揽检讨,以仅启用对这些不行点窜的最终字段的读取拜候。
假设念拜候私有对象就必要应用setAccessible(boolean)措施。演示案比方下:
写一个小例子, 例如说有一个实体类, UserInfo.java 用来存放用户外中的字段。这个岁月, 咱们就可能应用反射以及接下来的字段的注释来演示这个案例。
封装两个措施, 一个是通过 Class 取得对应的外名,这里外名计划成类名或者注释的值。字段相同也是。
从这里可能看出来, 既然可能取得对应的字段名称, 原本你可能正在这个根本上做更众的操作, 例如说,遵照实体类取得创修外的 SQL 语句等。
现正在热门, Java 编程常识点是一个相对成熟的系统, 而且对应有自身的优误差。跟着 Golang 和 Rust 的显现, Java 后端办事被取代的概率越来越大,然而这个岁月,显现了静态编译本领。该本领要紧是基于 GraalVM 。列位看官有元气心灵可能实验进修一下。照样很有需要的。比来也正在优化少少项目应用该本领。Java 的根本本领系统,写完了, 可能独立开一个系统说一说这个。立个 2022 的flag。