Method method = null;
for(Method mth : methods) {
//if (mth.getName().equals("getConstructor")) {
- if (mth.getName().equals("isAssignableFrom")) {
+ //if (mth.getName().equals("isAssignableFrom")) {
+ if (mth.getName().equals("getTypeParameters")) {
method = mth;
}
}
String typeVarName = "";
int comma = signature.indexOf(',', pos);
if (comma == -1) {
- int closing = signature.indexOf('>', pos);
+ int closing = signature.lastIndexOf('>', signature.length());
typeVarName = signature.substring(pos + 1, closing);
pos = signature.length();
} else {
return (opening != -1);
}
+ public static boolean isParameterizedType(String signature) {
+ return Types.isGenericSignature(signature);
+ }
+
public static boolean isArraySignature(String signature) {
if (signature == null || signature.equals(""))
return false;
types[j] = getTypeVariableImplObject(env, objRef, parameterizedTypes[j]);
} else if (Types.isWildcardType(parameterizedTypes[j])) {
types[j] = getWildcardTypeImplObject(env, objRef, parameterizedTypes[j]);
+ } else if (Types.isParameterizedType(parameterizedTypes[j])) {
+ // Recursion!
+ types[j] = getParameterizedTypeImplObj(parameterizedTypes[j], env, objRef, mi);
} else {
ClassInfo pci = cli.getResolvedClassInfo(parameterizedTypes[j]);
if (!pci.isRegistered()) {
int retRef;
if (Types.isGenericSignature(mi.getGenericReturnTypeName())) {
- retRef = getParameterizedTypeImplObj(mi.getGenericReturnTypeName(), env, objRef, mi);
+ if (Types.isArraySignature(mi.getGenericReturnTypeName())) {
+ // Generic array
+ retRef = getGenericArrayTypeImplObj(mi.getGenericReturnTypeName(), env, objRef, mi);
+ } else {
+ retRef = getParameterizedTypeImplObj(mi.getGenericReturnTypeName(), env, objRef, mi);
+ }
} else {
ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(mi.getReturnTypeName());
if (!ci.isRegistered()) {