private Type[] substitute(Type[] types) { Type[] substTypes = new Type[types.length]; for ( int i = 0; i < substTypes.length ; i++ ) { substTypes[i] = bind( types[i] ); } return substTypes; } }
@Override public Type caseTypeVariable(TypeVariable typeVariable) { if ( !containsKey( typeVariable )) { return typeVariable; } return get( typeVariable ); }
public SimpleTypeEnvironment(Type[] formalTypeArgs, Type[] actualTypeArgs) { for (int i = 0; i < formalTypeArgs.length; i++) { put( formalTypeArgs[i], actualTypeArgs[i] ); } }
private TypeEnvironment createEnvironment(ParameterizedType t) { Type[] tactuals = t.getActualTypeArguments(); Type rawType = t.getRawType(); if ( rawType instanceof Class ) { TypeVariable[] tparms = ( (Class) rawType ).getTypeParameters(); return new SimpleTypeEnvironment( tparms, tactuals ); } return IdentityTypeEnvironment.INSTANCE; } }
private TypeEnvironment createEnvironment(ParameterizedType t) { Type[] tactuals = t.getActualTypeArguments(); Type rawType = t.getRawType(); if ( rawType instanceof Class ) { TypeVariable[] tparms = ( (Class) rawType ).getTypeParameters(); return new SimpleTypeEnvironment( tparms, tactuals ); } return IdentityTypeEnvironment.INSTANCE; } }
@Override public Type caseTypeVariable(TypeVariable typeVariable) { if ( !containsKey( typeVariable )) { return typeVariable; } return get( typeVariable ); }
private Type[] substitute(Type[] types) { Type[] substTypes = new Type[types.length]; for ( int i = 0; i < substTypes.length ; i++ ) { substTypes[i] = bind( types[i] ); } return substTypes; } }
private TypeEnvironment createEnvironment(ParameterizedType t) { Type[] tactuals = t.getActualTypeArguments(); Type rawType = t.getRawType(); if ( rawType instanceof Class ) { TypeVariable[] tparms = ( (Class) rawType ).getTypeParameters(); return new SimpleTypeEnvironment( tparms, tactuals ); } return IdentityTypeEnvironment.INSTANCE; } }
public SimpleTypeEnvironment(Type[] formalTypeArgs, Type[] actualTypeArgs) { for (int i = 0; i < formalTypeArgs.length; i++) { put( formalTypeArgs[i], actualTypeArgs[i] ); } }
@Override public Type caseTypeVariable(TypeVariable typeVariable) { if ( !containsKey( typeVariable )) { return typeVariable; } return get( typeVariable ); }
private Type[] substitute(Type[] types) { Type[] substTypes = new Type[types.length]; for ( int i = 0; i < substTypes.length ; i++ ) { substTypes[i] = bind( types[i] ); } return substTypes; } }
private TypeEnvironment createEnvironment(ParameterizedType t) { Type[] tactuals = t.getActualTypeArguments(); Type rawType = t.getRawType(); if ( rawType instanceof Class ) { TypeVariable[] tparms = ( (Class) rawType ).getTypeParameters(); return new SimpleTypeEnvironment( tparms, tactuals ); } return IdentityTypeEnvironment.INSTANCE; } }
public SimpleTypeEnvironment(Type[] formalTypeArgs, Type[] actualTypeArgs) { for (int i = 0; i < formalTypeArgs.length; i++) { put( formalTypeArgs[i], actualTypeArgs[i] ); } }
@Override public Type caseTypeVariable(TypeVariable typeVariable) { if ( !containsKey( typeVariable )) { return typeVariable; } return get( typeVariable ); }
private Type[] substitute(Type[] types) { Type[] substTypes = new Type[types.length]; for ( int i = 0; i < substTypes.length ; i++ ) { substTypes[i] = bind( types[i] ); } return substTypes; } }
private TypeEnvironment createEnvironment(ParameterizedType t) { Type[] tactuals = t.getActualTypeArguments(); Type rawType = t.getRawType(); if ( rawType instanceof Class ) { TypeVariable[] tparms = ( (Class) rawType ).getTypeParameters(); return new SimpleTypeEnvironment( tparms, tactuals ); } return IdentityTypeEnvironment.INSTANCE; } }
public SimpleTypeEnvironment(Type[] formalTypeArgs, Type[] actualTypeArgs) { for (int i = 0; i < formalTypeArgs.length; i++) { put( formalTypeArgs[i], actualTypeArgs[i] ); } }
@Override public Type caseTypeVariable(TypeVariable typeVariable) { if ( !containsKey( typeVariable )) { return typeVariable; } return get( typeVariable ); }
private Type[] substitute(Type[] types) { Type[] substTypes = new Type[types.length]; for ( int i = 0; i < substTypes.length ; i++ ) { substTypes[i] = bind( types[i] ); } return substTypes; } }
private TypeEnvironment createSuperTypeEnvironment(Class clazz) { Class superclass = clazz.getSuperclass(); if ( superclass == null ) { return IdentityTypeEnvironment.INSTANCE; } Type[] formalArgs = superclass.getTypeParameters(); Type genericSuperclass = clazz.getGenericSuperclass(); if ( genericSuperclass instanceof Class ) { return IdentityTypeEnvironment.INSTANCE; } if ( genericSuperclass instanceof ParameterizedType ) { Type[] actualArgs = ( (ParameterizedType) genericSuperclass ).getActualTypeArguments(); return new SimpleTypeEnvironment( formalArgs, actualArgs ); } throw new AssertionError( "Should be unreachable" ); }