/** Returns a parameterized type, applying {@code typeArguments} to {@code rawType}. */ public static ParameterizedTypeName get(ClassName rawType, TypeName... typeArguments) { return new ParameterizedTypeName(null, rawType, Arrays.asList(typeArguments)); }
@Override public TypeName withoutAnnotations() { return new ParameterizedTypeName( enclosingType, rawType.withoutAnnotations(), typeArguments, new ArrayList<>()); }
@Override public ParameterizedTypeName annotated(List<AnnotationSpec> annotations) { return new ParameterizedTypeName( enclosingType, rawType, typeArguments, concatAnnotations(annotations)); }
/** Returns a parameterized type, applying {@code typeArguments} to {@code rawType}. */ public static ParameterizedTypeName get(Class<?> rawType, Type... typeArguments) { return new ParameterizedTypeName(null, ClassName.get(rawType), list(typeArguments)); }
/** Returns a parameterized type equivalent to {@code type}. */ static ParameterizedTypeName get(ParameterizedType type, Map<Type, TypeVariableName> map) { ClassName rawType = ClassName.get((Class<?>) type.getRawType()); ParameterizedType ownerType = (type.getOwnerType() instanceof ParameterizedType) && !Modifier.isStatic(((Class<?>) type.getRawType()).getModifiers()) ? (ParameterizedType) type.getOwnerType() : null; List<TypeName> typeArguments = TypeName.list(type.getActualTypeArguments(), map); return (ownerType != null) ? get(ownerType, map).nestedClass(rawType.simpleName(), typeArguments) : new ParameterizedTypeName(null, rawType, typeArguments); } }
/** * Returns a new {@link ParameterizedTypeName} instance for the specified {@code name} as nested * inside this class. */ public ParameterizedTypeName nestedClass(String name) { checkNotNull(name, "name == null"); return new ParameterizedTypeName(this, rawType.nestedClass(name), new ArrayList<>(), new ArrayList<>()); }
/** * Returns a new {@link ParameterizedTypeName} instance for the specified {@code name} as nested * inside this class, with the specified {@code typeArguments}. */ public ParameterizedTypeName nestedClass(String name, List<TypeName> typeArguments) { checkNotNull(name, "name == null"); return new ParameterizedTypeName(this, rawType.nestedClass(name), typeArguments, new ArrayList<>()); }
@Override public TypeName visitDeclared(DeclaredType t, Void p) { ClassName rawType = ClassName.get((TypeElement) t.asElement()); TypeMirror enclosingType = t.getEnclosingType(); TypeName enclosing = (enclosingType.getKind() != TypeKind.NONE) && !t.asElement().getModifiers().contains(Modifier.STATIC) ? enclosingType.accept(this, null) : null; if (t.getTypeArguments().isEmpty() && !(enclosing instanceof ParameterizedTypeName)) { return rawType; } List<TypeName> typeArgumentNames = new ArrayList<>(); for (TypeMirror mirror : t.getTypeArguments()) { typeArgumentNames.add(get(mirror, typeVariables)); } return enclosing instanceof ParameterizedTypeName ? ((ParameterizedTypeName) enclosing).nestedClass( rawType.simpleName(), typeArgumentNames) : new ParameterizedTypeName(null, rawType, typeArgumentNames); }
@Override public TypeName withoutAnnotations() { return new ParameterizedTypeName( enclosingType, rawType, typeArguments, new ArrayList<AnnotationSpec>()); }
@Override public TypeName withoutAnnotations() { return new ParameterizedTypeName( enclosingType, rawType, typeArguments, new ArrayList<AnnotationSpec>()); }
/** Returns a parameterized type, applying {@code typeArguments} to {@code rawType}. */ public static ParameterizedTypeName get(Class<?> rawType, Type... typeArguments) { return new ParameterizedTypeName(null, ClassName.get(rawType), list(typeArguments)); }
@Override public ParameterizedTypeName annotated(List<AnnotationSpec> annotations) { return new ParameterizedTypeName( enclosingType, rawType, typeArguments, concatAnnotations(annotations)); }
/** * Returns a new {@link ParameterizedTypeName} instance for the specified {@code name} as nested * inside this class. */ public ParameterizedTypeName nestedClass(String name) { checkNotNull(name, "name == null"); return new ParameterizedTypeName(this, rawType.nestedClass(name), new ArrayList<TypeName>(), new ArrayList<AnnotationSpec>()); }
/** * Returns a new {@link ParameterizedTypeName} instance for the specified {@code name} as nested * inside this class. */ public ParameterizedTypeName nestedClass(String name) { checkNotNull(name, "name == null"); return new ParameterizedTypeName(this, rawType.nestedClass(name), new ArrayList<TypeName>(), new ArrayList<AnnotationSpec>()); }
/** Returns a parameterized type equivalent to {@code type}. */ static ParameterizedTypeName get(ParameterizedType type, Map<Type, TypeVariableName> map) { ClassName rawType = ClassName.get((Class<?>) type.getRawType()); ParameterizedType ownerType = (type.getOwnerType() instanceof ParameterizedType) && !Modifier.isStatic(((Class<?>) type.getRawType()).getModifiers()) ? (ParameterizedType) type.getOwnerType() : null; List<TypeName> typeArguments = TypeName.list(type.getActualTypeArguments(), map); return (ownerType != null) ? get(ownerType, map).nestedClass(rawType.simpleName(), typeArguments) : new ParameterizedTypeName(null, rawType, typeArguments); } }
/** Returns a parameterized type equivalent to {@code type}. */ static ParameterizedTypeName get(ParameterizedType type, Map<Type, TypeVariableName> map) { ClassName rawType = ClassName.get((Class<?>) type.getRawType()); ParameterizedType ownerType = (type.getOwnerType() instanceof ParameterizedType) && !Modifier.isStatic(((Class<?>) type.getRawType()).getModifiers()) ? (ParameterizedType) type.getOwnerType() : null; List<TypeName> typeArguments = TypeName.list(type.getActualTypeArguments(), map); return (ownerType != null) ? get(ownerType, map).nestedClass(rawType.simpleName(), typeArguments) : new ParameterizedTypeName(null, rawType, typeArguments); } }
private ParameterizedTypeName getForParameterizedTypes(ParameterizedType type, Map<Type, TypeVariableName> map) { // like ParameterizedTypeName.get, but with TypeDescriptor support. final ClassName rawType = ClassName.get((Class<?>) type.getRawType()); final ParameterizedType ownerType = (type.getOwnerType() instanceof ParameterizedType) && !java.lang.reflect.Modifier.isStatic(((Class<?>) type.getRawType()).getModifiers()) ? (ParameterizedType) type.getOwnerType() : null; List<TypeName> typeArguments = list(type.getActualTypeArguments(), map); return (ownerType != null) ? getForParameterizedTypes(ownerType, map) .nestedClass(rawType.simpleName(), typeArguments) : new ParameterizedTypeName(null, rawType, typeArguments); }
/** * Returns a new {@link ParameterizedTypeName} instance for the specified {@code name} as nested * inside this class, with the specified {@code typeArguments}. */ public ParameterizedTypeName nestedClass(String name, List<TypeName> typeArguments) { checkNotNull(name, "name == null"); return new ParameterizedTypeName(this, rawType.nestedClass(name), typeArguments, new ArrayList<AnnotationSpec>()); }
/** * Returns a new {@link ParameterizedTypeName} instance for the specified {@code name} as nested * inside this class, with the specified {@code typeArguments}. */ public ParameterizedTypeName nestedClass(String name, List<TypeName> typeArguments) { checkNotNull(name, "name == null"); return new ParameterizedTypeName(this, rawType.nestedClass(name), typeArguments, new ArrayList<AnnotationSpec>()); }
private ParameterizedTypeName getForParameterizedTypes(ParameterizedType type, Map<Type, TypeVariableName> map) { // like ParameterizedTypeName.get, but with TypeDescriptor support. final ClassName rawType = ClassName.get((Class<?>) type.getRawType()); final ParameterizedType ownerType = (type.getOwnerType() instanceof ParameterizedType) && !java.lang.reflect.Modifier.isStatic(((Class<?>) type.getRawType()).getModifiers()) ? (ParameterizedType) type.getOwnerType() : null; List<TypeName> typeArguments = list(type.getActualTypeArguments(), map); return (ownerType != null) ? getForParameterizedTypes(ownerType, map) .nestedClass(rawType.simpleName(), typeArguments) : new ParameterizedTypeName(null, rawType, typeArguments); }