1

I'm playing around with annotation processor and JavaPoet. I have a method which I annotated with @MyAnno:

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

I want to generate a class which will have a method:

AsyncSubject<MyClass> get(int id);

What I've done so far is:

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

which gives me:

AsyncSubject<Observable<MyClass>>

How to get only MyClass?

rafakob
  • 2,759
  • 2
  • 17
  • 29

1 Answers1

3

If your returned type always is an Observable<X>, you might cast the result from get(executableElement.getReturnType()) to ParameterizedTypeName and access the first type argument:

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

Type, capacity and sanity checks apply.

Sormuras
  • 6,622
  • 29
  • 56