我有多个类中的静态方法,为了方便起见,我想在一个新的,生成的类中合并。
我正在使用注释处理和javapoet。
我的问题:从注释处理中,我将静态方法作为ExecutableElements列表。
对于JavaPoet,我需要创建那些的MethodSpecs。我在尝试:
public MethodSpec apply(@Nullable ExecutableElement input) {
TypeMirror returnType = input.getReturnType();
return MethodSpec.methodBuilder(THE_METHOD_NAME)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(THE_RETURN_TYPE)
.addParameter(EVERY_PARAMETER_WITH_TYPE_AND_NAME)
.addStatement("$T.$S($S)", THE_ENCLOSING_CLASS, THE_METHOD_NAME, THE_PARAMETERS)
.build();
}
我的问题:如何获取CAPS中缺失单词的类型值?好像ExecutableElements的行为不像反射api。
答案 0 :(得分:0)
这可能是一个可用于帮助您入门的示意代码:
THE_METHOD_NAME
- > input.getSimpleName()
THE_RETURN_TYPE
- > input.getReturnType()
THE_ENCLOSING_CLASS
- > input.getEnclosingElement().getSimpleName()
EVERY_PARAMETER_WITH_TYPE_AND_NAME
- >
for (VariableElement ve: executableElement.getParameters()){
System.out.println("Param name: " + ve.getSimpleName());
// note here that the type can be generic, so you'll need to parse
// the generic part and use to build a javapoet
// ParameterizedTypeName
System.out.println("Param type: " + ve.asType());
}