@Override public Type<?> visit(final Type<?> type) { return visit(type, TypeBindings.empty()); }
private void ensureNestedTypes() { if (_nestedTypes == null) { synchronized (CACHE_LOCK) { if (_nestedTypes == null) { _nestedTypes = GenericEraser.visit( _originalType.getDeclaredTypes() ); } } } }
private void ensureNestedTypes() { if (_nestedTypes == null) { synchronized (CACHE_LOCK) { if (_nestedTypes == null) { _nestedTypes = GenericEraser.visit( _originalType.getDeclaredTypes() ); } } } }
@Override public Type<?> visitTypeParameter(final Type<?> type, final TypeBindings bindings) { return visit(type.getExtendsBound()); }
private void ensureInterfaces() { if (_interfaces == null) { synchronized (CACHE_LOCK) { if (_interfaces == null) { _interfaces = GenericEraser.visit(_originalType.getExplicitInterfaces()); } } } }
private void ensureNestedTypes() { if (_nestedTypes == null) { synchronized (CACHE_LOCK) { if (_nestedTypes == null) { _nestedTypes = GenericEraser.visit( _originalType.getDeclaredTypes() ); } } } }
@Override public Type<?> visit(final Type<?> type) { return visit(type, TypeBindings.empty()); }
@Override public Type<?> visitWildcardType(final Type<?> type, final TypeBindings bindings) { return visit(type.getExtendsBound()); }
@Override public Type<?> visitWildcardType(final Type<?> type, final TypeBindings bindings) { return visit(type.getExtendsBound()); }
@Override public Type<?> visit(final Type<?> type) { return visit(type, TypeBindings.empty()); }
private void ensureInterfaces() { if (_interfaces == null) { synchronized (CACHE_LOCK) { if (_interfaces == null) { _interfaces = GenericEraser.visit(_originalType.getExplicitInterfaces()); } } } }
private void ensureInterfaces() { if (_interfaces == null) { synchronized (CACHE_LOCK) { if (_interfaces == null) { _interfaces = GenericEraser.visit(_originalType.getExplicitInterfaces()); } } } }
@Override public Type<?> visitTypeParameter(final Type<?> type, final TypeBindings bindings) { return visit(type.getExtendsBound()); }
@Override public Type<?> visitWildcardType(final Type<?> type, final TypeBindings bindings) { return visit(type.getExtendsBound()); }
@Override public Type<?> visitTypeParameter(final Type<?> type, final TypeBindings bindings) { return visit(type.getExtendsBound()); }
@Override public Type<?> visitArrayType(final Type<?> type, final TypeBindings bindings) { final Type<?> oldElementType = type.getElementType(); final Type<?> newElementType = visit(oldElementType); if (newElementType != oldElementType) { return newElementType.makeArrayType(); } return type; } }
@Override public Type<?> visitArrayType(final Type<?> type, final TypeBindings bindings) { final Type<?> oldElementType = type.getElementType(); final Type<?> newElementType = visit(oldElementType); if (newElementType != oldElementType) { return newElementType.makeArrayType(); } return type; }
@Override public Type<?> visitArrayType(final Type<?> type, final TypeBindings bindings) { final Type<?> oldElementType = type.getElementType(); final Type<?> newElementType = visit(oldElementType); if (newElementType != oldElementType) { return newElementType.makeArrayType(); } return type; } }
private void ensureConstructors() { synchronized (CACHE_LOCK) { if (_constructors == null) { _constructors = GenericEraser.visit( this, _originalType.getConstructors(BindingFlags.All), TypeBindings.create( _originalType.getGenericTypeParameters(), UpperBoundMapper.visit(_originalType.getGenericTypeParameters()) ) ); } } }
@Override public FieldInfo visitField(final Type<?> declaringType, final FieldInfo field, final TypeBindings bindings) { final Type<?> oldFieldType = field.getFieldType(); final Type<?> newFieldType = visit(field.getFieldType(), bindings); if (TypeUtils.areEquivalent(oldFieldType, newFieldType) && TypeUtils.areEquivalent(field.getDeclaringType(), declaringType)) { return field; } return new ErasedField( field, declaringType, newFieldType ); }