今天一不小心写了个以“private static final String filePath=“XXX””为成员变量的util类,所以代码都写完了,就差个UT,实在不愿意重写,然后就开始摸鱼解决这个傻X代码的一天~~~
1、 仿写工具类:Constants
public class Constants {
private static final String param2 = new String("参数2");
public static String get() {
System.out.println(param2);
return param2;
}
}
2. 单元测试类:reflectionTest
public class reflectionTest {
public static void main(String[] args) throws Exception {
// Object o = Constants.class.newInstance();//获取对象
Constants forName = (Constants) Class.forName("com.example.flink.testChengYuanBianliang.Constants").getDeclaredConstructor().newInstance();
String str = "20";
Field field = Constants.class.getDeclaredField("param2");//获取全部参数
// |Modifier.FINAL
if ((Modifier.PRIVATE | Modifier.STATIC | Modifier.FINAL) == field.getModifiers()) {
if (field.getType().getName().contains("String")) {
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.setAccessible(true);
field.set(forName, str);
System.out.println(Constants.get());
}
}
}
}
3. 测试结果:
4. 吐血总结
我可太优秀了。。。。 (1) 这串代码真是绝绝子,新世界的大门: Constants forName = (Constants) Class.forName(“com.example.flink.testChengYuanBianliang.Constants”).getDeclaredConstructor().newInstance(); (2) 下面的就是一天的纠结,我都快怀疑人生了,“某些文章”还一直说不生效,我。。。。。
https://blog.csdn.net/waterseason/article/details/84735361?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.nonecase
|