微信开发网站,网站后期维护流程,织梦网站专题模板下载,上海发乐门网站建设公司文章目录 反射类操作方法操作字段操作获取注解 反射
在 Guava 中#xff0c;反射#xff08;Reflection#xff09;模块提供了一些用于简化反射操作的工具类和方法。通过 Guava 的反射模块#xff0c;您可以方便地进行类、方法、字段的操作、获取注解信息等。下面详细介绍… 文章目录 反射类操作方法操作字段操作获取注解 反射
在 Guava 中反射Reflection模块提供了一些用于简化反射操作的工具类和方法。通过 Guava 的反射模块您可以方便地进行类、方法、字段的操作、获取注解信息等。下面详细介绍一些 Guava 反射模块的使用方法和示例。
类操作 使用 TypeToken 类可以获取类的类型信息包括泛型类型 TypeTokenString stringToken TypeToken.of(String.class);
TypeTokenListString listToken new TypeTokenListString() {};
Class? stringClass stringToken.getRawType(); // 获取原始类型结果为 class java.lang.String
Type stringType stringToken.getType(); // 获取类型结果为 java.lang.String
Type listType listToken.getType(); // 获取类型结果为 java.util.Listjava.lang.String方法操作 使用 Invokable 类可以调用方法、获取方法的参数和返回值类型等信息 Method method MyService.class.getMethod(myMethod, String.class, int.class);
Invokable?, ? invokable Invokable.from(method);
Object result invokable.invoke(myServiceInstance, param1, 123); // 调用方法
Type returnType invokable.getReturnType().getType(); // 获取返回值类型
ListTypeToken? parameterTypes invokable.getParameterTypes(); // 获取参数类型列表字段操作 使用 FieldReflection 类可以获取和设置字段的值、获取字段的类型等信息 Field field MyService.class.getField(myField);
Object fieldValue FieldReflection.getField(field, myServiceInstance); // 获取字段的值
FieldReflection.setField(field, myServiceInstance, newValue); // 设置字段的值
Type fieldType FieldReflection.getFieldType(field).getType(); // 获取字段的类型获取注解
使用 AnnotationScanner 类可以扫描类或方法上的注解并获取注解的信息ImmutableListClass? extends Annotation annotations ImmutableList.of(MyAnnotation.class);
AnnotationScanner.scanClasspath(ClasspathHelper.forPackage(com.example)).annotatedWithAny(annotations).forEach(cls - {MyAnnotation myAnnotation cls.getAnnotation(MyAnnotation.class);// 处理注解信息});