JavaPoet - 获取泛型类型

时间:2015-12-03 08:52:32

标签: java android annotations javapoet

我正在使用注释处理器和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?

1 个答案:

答案 0 :(得分:2)

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

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

适用类型,容量和健全性检查。