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?


person rafakob    schedule 03.12.2015    source источник


Ответы (1)


Если ваш возвращаемый тип всегда является Observable<X>, вы можете преобразовать результат из get(executableElement.getReturnType()) в ParameterizedTypeName и получить доступ к первому аргументу типа:

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

Применяются проверки типа, емкости и работоспособности.

person Sormuras    schedule 03.12.2015