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

How to add type constraints to parameterSpec for method

我正在努力按照标题所说的做 -- 我想生成一个类似于以下内容的方法规范:

public void doSomethingWithThis( Container<? extends ImportantInterface> argument ) {
 //1. Collect UnderPants
 //2. ...
 //3. Profit
}

我知道我可以只使用原始类型,但生成的东西将被下游的其他人使用,并且在他们的 IDE 中弹出类型信息(就此而言我的 :/ )将使我的错误解决生活更轻松...

所以,我是一个工具箱,又花了 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())