ret.typeKind = TypeKind.WILDCARD;
ret.setLowerBound(bound);
return ret;
+ } else if (signature.startsWith("T")) {
+ String typeVariableName = signature.substring(1);
+ if (typeVariableName.endsWith(";")) {
+ typeVariableName = typeVariableName.substring(0, typeVariableName.length() -1);
+ }
+ return new UnresolvedTypeVariableReferenceType(new TypeVariable(typeVariableName));
}
return new UnresolvedType(signature);
}
case '+': return TypeFactory.createTypeFromSignature(signature);
case '-' : return TypeFactory.createTypeFromSignature(signature);
case '?' : return TypeFactory.createTypeFromSignature(signature);
- case 'T' : return new UnresolvedTypeVariableReferenceType(new TypeVariable(signature.substring(1)));
+ case 'T' : return TypeFactory.createTypeFromSignature(signature);
default: throw new BCException("Bad type signature " + signature);
}
}
}
public void write(DataOutputStream s) throws IOException {
- s.writeUTF(signature);
+ s.writeUTF(getSignature());
}
public static UnresolvedType read(DataInputStream s) throws IOException {