0

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

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

问题:不确定如何添加返回类型:ServiceA<? extends ServiceB>

假设我有 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
    }

任何线索将不胜感激。

4

1 回答 1

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")));
于 2020-09-08T13:53:51.243 回答