public <T> Type<T[]> getArrayType(final Type<T> elementType) { Type<T[]> arrayType = (Type<T[]>)_arrayMap.get(elementType); if (arrayType != null) { return arrayType; } arrayType = new ArrayType<>(elementType); add(arrayType); return arrayType; }
static void ensureRegistered() { if (Types.Object != Type.CACHE.find(java.lang.Object.class)) { throw new IllegalStateException("Standard Java types were not successfully registered!"); } } }
public final Type<T[]> makeArrayType() { synchronized (CACHE_LOCK) { return CACHE.getArrayType(this); } }
final Type cachedType = Type.CACHE.find((Class<?>) t); final Type fromCache = Type.CACHE.find( Type.CACHE.key( rawType.getErasedClass(), Type.list(resolvedTypeArguments) return Type.CACHE.getGenericType(rawType, Type.list(resolvedTypeArguments));
@Override public Type<?> visitClassType(final Type<?> type, final TypeBindings bindings) { if (bindings.containsGenericParameter(type)) { return bindings.getBoundType(type); } final TypeBindings oldTypeBindings = type.getTypeBindings(); final TypeBindings newTypeBindings = visitTypeBindings(oldTypeBindings, bindings); if (oldTypeBindings != newTypeBindings) { final Type<?> cachedType = Type.CACHE.find( Type.CACHE.key( type.getErasedClass(), newTypeBindings.getBoundTypes() ) ); if (cachedType != null) { return cachedType; } final GenericType genericType = new GenericType( type.getGenericTypeDefinition(), newTypeBindings ); Type.CACHE.add(genericType); return genericType; } return type; }
public Key key(final Type<?> type) { return key(type, TypeList.empty()); }
@Override protected Type makeGenericTypeCore(final TypeList typeArguments) { synchronized (CACHE_LOCK) { return CACHE.getGenericType(getGenericTypeDefinition(), typeArguments); } }
final Type cachedType = Type.CACHE.find((Class<?>) t); final Type fromCache = Type.CACHE.find( Type.CACHE.key( rawType, Type.list(resolvedTypeArguments) return Type.CACHE.getGenericType(rawType, Type.list(resolvedTypeArguments));
@Override public Type<?> visitClassType(final Type<?> type, final TypeBindings bindings) { if (bindings.containsGenericParameter(type)) { return bindings.getBoundType(type); } final TypeBindings oldTypeBindings = type.getTypeBindings(); final TypeBindings newTypeBindings = visitTypeBindings(oldTypeBindings, bindings); if (oldTypeBindings != newTypeBindings) { final Type<?> cachedType = Type.CACHE.find( Type.CACHE.key( type.getErasedClass(), newTypeBindings.getBoundTypes() ) ); if (cachedType != null) { return cachedType; } final GenericType genericType = new GenericType( type.getGenericTypeDefinition(), newTypeBindings ); Type.CACHE.add(genericType); return genericType; } return type; }
public <T> Type<T> getGenericType(final Type<T> typeDefinition, final TypeList typeArguments) { final Key key = key( typeDefinition.getErasedClass(), typeArguments ); Type genericType = _map.get(key); if (genericType == null) { genericType = new GenericType( typeDefinition.getGenericTypeDefinition(), typeArguments ); final Type existing = _map.put(key, genericType); if (existing != null) { return existing; } } return genericType; }
@Override protected Type makeGenericTypeCore(final TypeList typeArguments) { synchronized (CACHE_LOCK) { return CACHE.getGenericType(getGenericTypeDefinition(), typeArguments); } }
final Type cachedType = Type.CACHE.find((Class<?>) t); final Type fromCache = Type.CACHE.find( Type.CACHE.key( rawType.getErasedClass(), Type.list(resolvedTypeArguments) return Type.CACHE.getGenericType(rawType, Type.list(resolvedTypeArguments));
static void ensureRegistered() { if (Void != Type.CACHE.find(java.lang.Void.TYPE)) { throw new IllegalStateException("Primitive types were not successfully registered!"); } }
public <T> Type<T[]> getArrayType(final Type<T> elementType) { Type<T[]> arrayType = (Type<T[]>) _arrayMap.get(elementType); if (arrayType != null) { return arrayType; } arrayType = elementType.createArrayType(); add(arrayType); return arrayType; }
public <T> Type<T> getGenericType(final Type<T> typeDefinition, final TypeList typeArguments) { final Key key = key( typeDefinition.getErasedClass(), typeArguments ); Type genericType = _map.get(key); if (genericType == null) { genericType = new GenericType( typeDefinition.getGenericTypeDefinition(), typeArguments ); final Type existing = _map.put(key, genericType); if (existing != null) { return existing; } } return genericType; }
@Override protected Type makeGenericTypeCore(final TypeList typeArguments) { synchronized (CACHE_LOCK) { return CACHE.getGenericType(getGenericTypeDefinition(), typeArguments); } }
public Type<T[]> makeArrayType() { synchronized (CACHE_LOCK) { return CACHE.getArrayType(this); } }