JavaPoet - 获取泛型

JavaPoet - get generic type

我正在玩注解处理器和 JavaPoet。我有一个用@MyAnno注释的方法:

@MyAnno
Observable<MyClass> get(int id);

我想生成一个 class 它将有一个方法:

AsyncSubject<MyClass> get(int id);

到目前为止我所做的是:

ClassName classAsyncSubject = ClassName.get("rx.subjects", "AsyncSubject");
TypeName newReturnType = ParameterizedTypeName.get(classAsyncSubject, get(executableElement.getReturnType()));

这给了我:

AsyncSubject<Observable<MyClass>>

如何只获取MyClass?

如果您返回的类型始终是 Observable<X>,您可以将结果从 get(executableElement.getReturnType()) 转换为 ParameterizedTypeName 并访问第一个类型参数:

((ParameterizedTypeName) get(executableElement.getReturnType()).typeArguments.get(0)

适用类型、容量和完整性检查。