【问题标题】:How to add a parameterized return type of function in Java Poet如何在 Java Poet 中添加函数的参数化返回类型
【发布时间】:2020-12-26 16:34:26
【问题描述】:

如何生成具有以下签名的方法?

public ServiceA<? extends ServiceB> anyFunctionName() {
    // code
}

问题: 不知道如何添加返回类型:ServiceA&lt;? extends ServiceB&gt;

假设我有 ServiceA 和 ServiceB 的 FQCN。

我正在尝试的是下面的代码,但不起作用。

 MethodSpec.Builder builder =
            MethodSpec.methodBuilder("anyFunctionName")
                .addModifiers(Modifier.PRIVATE)
  .returns(ParameterSpec.builder(ParameterizedTypeName.get(
                    ClassName.bestGuess("com.learn.ServiceA"),
                    WildcardTypeName.subtypeOf(Object.class),
                    ClassName.bestGuess("com.learn.ServiceB")).build());

以上代码生成如下代码:

public ServiceA<? , ServiceB> anyFunctionName() {
        // code
    }

任何线索将不胜感激。

【问题讨论】:

  • 假设它们只是提供 FQCN 的工厂类。
  • “不起作用”是什么意思?
  • 没有提供所需的输出。
  • 为了更清晰更新了问题。
  • 没问题,很高兴我能把你推向正确的方向。

标签: java javapoet


【解决方案1】:

非常感谢@Michael 指出我所犯的错误。

以下代码有效。

MethodSpec.Builder builder =
            MethodSpec.methodBuilder("anyFunctionName")
                .addModifiers(Modifier.PRIVATE)
  .returns(ParameterizedTypeName.get(
                    ClassName.bestGuess("com.learn.ServiceA"),
                    WildcardTypeName.subtypeOf(ClassName.bestGuess("com.learn.ServiceB")));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2011-07-17
    • 2020-11-06
    • 2019-02-17
    • 1970-01-01
    相关资源
    最近更新 更多