jcodemodel icon indicating copy to clipboard operation
jcodemodel copied to clipboard

How can I get the Java Class value for a generated param?

Open djett41 opened this issue 3 years ago • 4 comments

I am trying to figure out how to get the Java Class of a generated param. I have tried using getting the AbstractJType type() from the param and playing around with the API but cant seem to figure out how to get the Class value.

For example given the following params I would like to extract the type. I am also trying to determine if a param is a List or not, but I cant seem to figure that out either. I ave tried isArray on the type, as well a using a ref to a List.class and checking isAssignable but I think its checking the actual jcode type. I am trying to refrain from checking if the param.type().name().startsWith("List") or use regex to extract the type, but at this point thats all I can come up with

List<CustomObject> - List CustomObject - CustomObject is List<CustomObject> of type list? - true is CustomObject of type list? - false

Thanks!

djett41 avatar May 16 '21 22:05 djett41

could you provide a minimal example of code ?

glelouet avatar May 17 '21 07:05 glelouet

Hmm this does not work

  {
  	JMethod method = null;
        JVar firstParam = method.paramAtIndex(0);
  	if(firstParam.type() instanceof JReferencedClass ) {
  		var typeclass = ((JReferencedClass) firstParam.type()).getReferencedClass();
  	}
  }

I guess we should add the corresponding Class<?> JReferencedClass::getReferencedClass() @phax ?

glelouet avatar May 17 '21 07:05 glelouet

I think the method should be added in the abstractJType :

boolean AbstractJType::isInstanceOf(Class <?> clazz) {return owner().ref(clazz).isAssignableFrom(this);} . This would allow to call if(firstParam.type().isInstanceOf(List.class)){…}

glelouet avatar May 19 '21 12:05 glelouet

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Aug 21 '21 04:08 stale[bot]