如何为方法的parameterSpec添加类型约束

时间:2018-03-05 09:31:02

标签: java javapoet

我正在努力完成标题所说的内容 - 我想生成一个看起来类似的方法规范:

index = '{}-{}'.format(kids_csv_file.Questions[i], kids_csv_file.SubQuestion[i])
questions_dict[index] = kids_csv_file.Answers[i];

我知道我可以使用原始类型,但生成的东西将被其他人下游消耗,并且在他们的IDE中弹出类型信息(我的那个:/)将使我的bug解决生活更轻松下线...

1 个答案:

答案 0 :(得分:0)

所以,我是一个工具箱,又花了7分钟左右找到答案的路径。注释中的问题指向了正确的方向,尽管它使用的是ParameterizedTypeName.create(),现在是ParameterizedTypeName.get()

代码用于示例目的,因为其他人可能会觉得这很有用。

ClassName containerClassName = ClassName.get(Container.class);
TypeName wildcardTypeName = WildcardTypeName.subtypeOf(ImportantInterface.class);
ParameterizedTypeName parameterTypeName = ParameterizedTypeName.get(containerClassName, wildcardTypeName);

classBuilder.addMethod(MethodSpec.constructorBuilder()
        .addModifiers(Modifier.PUBLIC)
        .addParameter(parameterTypeName, "cargo")
        .addStatement(CodeBlock.builder()
                .addStatement("//1. Collect Underpants")
                .addStatement("//2. ...")
                .addStatement("//3. Profit!!!")
                .build())