I have done further reading on how this is implemented by the compiler and finally found out the answer I was looking for.
You can defenitely do that with javaassist. The key class is javassist.bytecode.SignatureAttribute.
From a CtMethod, i've obtained the methodInfo I add a Signature attribute. You can do it with something like:
CtMethod method = .... MethodInfo methodInfo = method.getMethodInfo(); SignatureAttribute signatureAttribute = new SignatureAttribute(methodInfo.getConstPool(), "()Ljava/util/List<Ljava/lang/String;>;"); methodInfo.addAttribute(signatureAttribute);
If your more interesed in reading the signature with the generics inside, you can use the methodInfo.getAttribute(SignatureAttribute.tag).
I hope this helped.
I'am interested in reading return and parameter types like Collection . With your suggestion it does not work for me. I just get somer annotations an thats it. If I work with mthod.getReturnType() i get Collection but not Collection. Does someone have an idea how to solve this problem?