@Override @SuppressWarnings("unchecked") public TypeVariable<Class<T>>[] getTypeParameters() { if (!type.isClassType()) { return new TypeVariable[0]; } else { RVMClass klass = type.asClass(); Atom sig = klass.getSignature(); if (sig == null) { return new TypeVariable[0]; } else { return JikesRVMHelpers.getTypeParameters(this, sig); } } }
public Type getGenericSuperclass() { if (type.isArrayType()) { return Object.class; } else if (type.isPrimitiveType() || type.isUnboxedType() || (type.isClassType() && type.asClass().isInterface()) || this == Object.class) { return null; } else { RVMClass klass = type.asClass(); Atom sig = klass.getSignature(); if (sig == null) { return getSuperclass(); } else { return JikesRVMHelpers.getSuperclassType(this, sig); } } }
public Type[] getGenericInterfaces() { if (type.isPrimitiveType() || type.isUnboxedType()) { return new Type[0]; } else if (type.isArrayType()) { // arrays implement JavaLangSerializable & JavaLangCloneable return new Class[] { RVMType.JavaLangCloneableType.getClassForType(), RVMType.JavaIoSerializableType.getClassForType() }; } else { RVMClass klass = type.asClass(); Atom sig = klass.getSignature(); if (sig == null) { return getInterfaces(); } else { return JikesRVMHelpers.getInterfaceTypesFromSignature(this, sig); } } }