我正在使用注释处理器和JavaPoet。我有一个用@MyAnno注释的方法:
@MyAnno
Observable<MyClass> get(int id);
我想生成一个具有方法的类:
AsyncSubject<MyClass> get(int id);
到目前为止我所做的是:
ClassName classAsyncSubject = ClassName.get("rx.subjects", "AsyncSubject");
TypeName newReturnType = ParameterizedTypeName.get(classAsyncSubject, get(executableElement.getReturnType()));
给了我:
AsyncSubject<Observable<MyClass>>
如何只获取MyClass?
答案 0 :(得分:2)
如果返回的类型始终为Observable<X>
,您可以将结果从get(executableElement.getReturnType())
转换为ParameterizedTypeName
并访问第一个类型参数:
((ParameterizedTypeName) get(executableElement.getReturnType()).typeArguments.get(0)
适用类型,容量和健全性检查。