assertEquals(null, Test1.S_DATA.I_DATA.I_INT2);// 没操作过就是 null
}
根据如上注释相信大家也可以理解一二了,如果还想了解更多使用方式,可以查看我写的单元测试类 ReflectUtilsTest,其使用方式就介绍到这里,下面介绍其实现方式。
Achieve
实现的话是站在 jOOR 的肩膀上进行改造,其内部封装了一个 private final Object object;
变量,每次进行反射操作时都会重新实例化一个变量并把结果赋予该变量,最终 get()
就是获取其值,比如我们来看一下 newInstance
的操作,其涉及的代码如下所示:
/**
- 实例化反射对象
- @param args 实例化需要的参数
- @return {@link ReflectUtils}
*/
public ReflectUtils newInstance(Object… args) {
Class<?>[] types = getArgsType(args);
try {
Constructor<?> constructor = type().getDeclaredConstructor(types);
return newInstance(constructor, args);
} catch (NoSuchMethodException e) {
List<Constructor<?>> list = new ArrayList<>();
for (Constructor<?> constructor : type().getDeclaredConstructors()) {
if (match(constructor.getParameterTypes(), types)) {
list.add(constructor);
}
}
if (list.isEmpty()) {
throw new ReflectExcept