java getfield_Java 反射:通过 getField() 设置公共全局变量

article/2025/10/4 5:35:47

139c865df05c8af0cd1ad3552f337e7b.png

Java 通过 getField() 操作公共全局变量

以前写 JavaWeb 项目启动初始化系统配置全局变量的代码,都是 variable = Properties.getProperty(name) 这样一行一行代码的设置,变量少还好说,变量一多真的很磨叽。所以一直想通过 循环 简化代码,重构某个项目时无意间发现了 Java 反射中的 getField() 以及其他相关方法,节省了大量代码,所以在此记录一下。由于反射的 性能 问题,只在系统启动时初始化数据使用。

依赖工具类 PropertiesUtils

package net.itanken.test.util;

import java.util.Properties;

public class PropertiesUtils {

private static Properties props = new Properties();

public static final String get(String key) {

return props.getProperty(key, "");

}

// 省略 Properties.load() 等其他相关代码

}

全局配置类 Configuration

重点代码为 Configuration.class.getField(name).set(Configuration.class, value);,在 foreach 循环中设置非空配置对应变量的值,.properties 文件中的 key 需与要设置的变量名一致。

package net.itanken.test.basic;

import net.itanken.test.util.PropertiesUtils;

/**

* System Config

* @author T

* @since 20180530

*/

public class Configuration {

public static String sysName = "系统名称";

public static String sysVer = "系统版本";

public static String resVer = "静态资源版本";

public static String support = "技术支持";

public static String copyright = "版权声明";

public static final boolean initConfig() {

String[] names = new String[]{"sysName", "sysVer", "resVer", "support", "copyright"};

String value = null;

try {

for (String name : names) {

value = PropertiesUtils.get(name);

if (value.length() > 0) {

Configuration.class.getField(name).set(Configuration.class, value);

}

// System.out.println(name + "=" + Configuration.class.getField(name).get(Configuration.class));

}

} catch (Exception e) {

return false;

}

return true;

}

}

测试结果

嗯,测试结果与 .properties 文件中的配置一致,OK。

sysName=自定义系统显示名称

sysVer=67.0.3396.62(正式版)

resVer=20180530150546

support=Technical support provided by StarSevenSky Studio.

copyright=©2018 子兮子兮 版权所有

其他

Class.getField(String name) 方法用于获取由 public 修饰的公共成员字段,获取 private 修饰的私有成员字段可使用 Class.getDeclaredField(String name) 方法。

与之对应的获取 所有 公共成员字段 和 私有成员字段 的方法为 Class.getFields() 和 Class.getDeclaredFields()。

另外从代码中可以看出,获取和设置字段值的方法分别为 get() 和 set()。

PS. 以前对 getField 及其他相关方法并不了解,完全是依靠 IDE 的代码提示功能在偶然间发现的,多亏了我的 IDE。


http://chatgpt.dhexx.cn/article/ft0e0daO.shtml

相关文章

getField和getDeclaredField的区别

这两个方法都是用于获取字段 1.getField 只能获取public的,包括从父类继承来的字段。 2.getDeclaredField 可以获取本类所有的字段,包括private的,但是不能获取继承来的字段。 (注: 这里只能获取到private的字段,但并不…

vscode插件开发总结

一、关于vscode插件 相信大家对vscode应该都不陌生,VSCode是微软出的一款轻量级代码编辑器,免费而且功能强大,以功能强大、提示友好、不错的性能和颜值俘获了大量开发者的青睐,对JavaScript和NodeJS的支持非常好,自带…

2021-前端-VsCode插件

此乃吾习前端,VsCode之插件,个人所装,喜着自拿,不足之处还望海涵,多加批评。 1.Auto Close Tag——自动闭合尾部的标签 2.Atuo Rename Tag——修改 html 标签 自动帮你完成头部和尾部闭合标签的同步修改 3.Bracket…

关于VSCode插件的安装位置

VSCode的插件地址修改_上善若泪-CSDN博客_vscode插件位置文章目录1 data文件夹2 使用--extensions-dir命令3 使用mklink命令vscode编辑器强大的地方是可以使用各种各样的插件,但是插件默认的地方是在:C盘,让一些强迫症可能会受不了,非要迁移到…

vscode 插件-常用插件

VSCode常用插件(安装步骤同汉化) 1、*Auto Close Tag (自动闭合HTML/XML标签) 2、*Auto Rename Tag (自动帮你完成尾部闭合标签的同步修改,不过有些bug) 3、*Prettier(Prettier 是目前 Web 开发中最受欢迎的代码格式化程序) 安装Prettier -Code formatter这个插件…

Vscode 插件包下载并离线安装

打开VSCode插件官网 官网链接是https://marketplace.visualstudio.com/vscode 搜索Go 在输入框中输入go,搜索,结果如下: 点击Download Extension下载 注意:有时候找不到Download Extension,可能是网速加载慢&…

VsCode插件安装及推荐

1、快捷键Ctrl P,打开插件,输入 ext install (我习惯的输入方式); 2、或者点击图片中的圈红的按钮,也可以进入插件安装商城; 3、下面开始说下我目前安装的插件(我目前是vue开发&…

VScode安装离线插件

1. 下载及安装 首先在VScode官方插件库下载自己所需要的插件:https://marketplace.visualstudio.com/vscode 下载成功之后是以**.vsix**结尾的文件 然后再VScode软件中进行导入刚下载的文件 如果提示蓝色信息则为安装成功,红色则为失败 2. 版本不兼容报…

VSCode前端必备插件

跨平台的文本编辑器。由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱。 就像大多数 IDE 一样,VSCode 也有一个扩展和主题市场,包含了数以千计质量不同的插件。为了帮助大家挑选出值得下载的插件,我们针对性的收集了一些…

如何写一个vscode插件

1.运行yo code创建项目 2.选择使用yarn或者npm 3.运行 官网这个例子需要我们 ctrl shirt p 调出输入框, 然后在里面输入hello w 就可以如图所示 activationEvents: 当什么情况下, 去激活这个插件 activationEvents.onCommand: 在某个命令下激活(之后会专门列出很多其他条件…

Python好用的VSCode插件

1. Better Comments 这是一个让你能更好地编写注释的工具,它能根据关键词用不同的颜色高亮代码片段。支持以下类型的高亮: 感叹号 “!” 代码警告。问号“?”代表存留疑问。TODO 代码未来将要进行的操作。param 参数 2. autoDocstring 能够自动生成函…

VScode插件(自用)

一、Material Icon Theme 图标插件 它采用了 Google Material Design 风格,文件图标以及文件夹图标覆盖非常的全面。 二、 颜色主题插件Themes(代码颜色)中的 Monokai Dimmed 三、css peek 使用此插件,你可以追踪至样式表中 CSS…

2022年好用的Vscode插件

Chinese(VSCode汉化插件) 第一款推荐的插件叫Chinese 是一款VSCode汉化插件 这样,VSCode就完成了汉化 Material Theme(主题插件) 第二款插件是一个好看的主题插件Material Theme 它包含了多套不同色彩风格的主题,以及好看的图标样式。 选择不同主题可以…

VSCode 插件

文章目录 VSCode 插件 VSCode 插件 图标插件作用Auto Import在j\ts文件中,直接使用外部依赖包的变量名,此时,会自动写入导入语句Bracket Pair Colorizer2VS Code 已经内置Chinese (Simplified) (简体中文)汉化Code Spell Checker适用于代码和…

vscode常用插件总结

1、Code Spell Checker 检查单词拼写 2、Auto Rename Tag html/xml标签改变,将会成对改变~ 3、Color Highlight 颜色标记 4、vscode-icon 文件图标 5、Turbo Console Log 或者 javascript console utils 按ctrlAltL可以快速输出console.log 6、v…

vscode插件(个人正在用的)

插件目录 any-ruleAuto Close TagAuto Rename Tagbackground-coverChinese (Simplified) (简体中文) Language Pack for Visual Studio CodeDebugger for JavaError LensESLintExtension Pack for JavaImage previewIntelliCodeIntelliCode API Usage ExamplesLanguage Support…

Vue3 (Vscode插件)

前端开发的编辑器有很多种如DW,hubilder,Web Storm,sublime,vscode,等等。 Vue3 vite Ts pinia 实战 源码 全栈_哔哩哔哩_bilibili 视频教程 随着VsCode开源免费,丰富的插件,也是深受前端开发人员爱戴,在我们使…

vscode插件开发

目录 插件在 VSCode 中能做什么 1、发布应用市场 1、申请Microsoft账号 2、创建Azure DevOps组织 3、创建令牌 4、创建发布账号 5、发布应用市场 2、本地打包不发布 1、本地打包 2、导入应用商店 ​编辑 3、插件开发前的环境准备 2、项目初始化 3、运行项目 4、文件…

VSCode插件推荐

1. VSCode汉化包插件 :Chinese (Simplified) (简体中文) Language VSCode汉化包,原始默认是英文的所以我们需要下一个中文插件。 2. VSCode自动补全标签 :Auto Close Tag Auto Close Tag 对Html或Xml文件自动创建结束标签; 如在…

vscode常用插件大全

vscode常用插件大全 参考文章 https://mp.weixin.qq.com/s/1PkWPApvn5uWJl_cdzcoTA 说明 该片文章基本介绍了 vscode 常用插件 , 已经很全面 本文不做任何编辑器的比较,只是我本人日常使用 vscode 进行开发,并且比较喜欢折腾 vscode ,会到处…