Package com.strobel.reflection.emit
Class TypeBuilder<T>
java.lang.Object
com.strobel.reflection.MemberInfo
com.strobel.reflection.Type<T>
com.strobel.reflection.emit.TypeBuilder<T>
- All Implemented Interfaces:
AnnotatedElement,Type
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final classprivate static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Map<Class<? extends Annotation>, AnnotationBuilder<? extends Annotation>> private ReadOnlyList<AnnotationBuilder<? extends Annotation>> private Type<?> private ConstructorListprivate MethodBuilderprivate TypeBuilder<?> private static MethodHandleprivate Type<?> private FieldListprivate Stringprivate intprivate booleanprivate TypeListprivate Stringprivate booleanprivate booleanprivate MethodListprivate intprivate Stringprivate Packageprivate MethodHandles.Lookupprivate final ProtectionDomainprivate TypeBindings(package private) final ConstantPool(package private) final ArrayList<ConstructorBuilder> private static final String(package private) final ArrayList<FieldBuilder> private static final String(package private) final ArrayList<GenericParameterBuilder<?>> (package private) final ArrayList<MethodBuilder> (package private) final ArrayList<TypeBuilder.MethodOverride> private static final MemberFilterprivate static final StringFields inherited from class com.strobel.reflection.Type
Bottom, DefaultBinder, DefaultLookup, Delimiter, EmptyConstructors, EmptyFields, EmptyMembers, EmptyMethods, EmptyObjects, EmptyStrings, EmptyTypes, FilterMethodOverride, FilterName, FilterNameIgnoreCase, FilterRawMember, NullType, Value -
Constructor Summary
ConstructorsConstructorDescriptionTypeBuilder(String name, int modifiers) TypeBuilder(String name, int genericParameterPosition, MethodBuilder declaringMethod) TypeBuilder(String name, int genericParameterPosition, TypeBuilder<?> declaringType) TypeBuilder(String name, int modifiers, Type<?> baseType, TypeBuilder<?> declaringType) TypeBuilder(String name, int modifiers, Type<?> baseType, TypeList interfaces) TypeBuilder(String name, int modifiers, Type<?> baseType, TypeList interfaces, MethodHandles.Lookup packageAccess) TypeBuilder(String name, int modifiers, Type<? super T> baseType, TypeList interfaces, TypeBuilder<?> declaringType) TypeBuilder(String name, int modifiers, Type<? super T> baseType, TypeList interfaces, TypeBuilder<?> declaringType, MethodHandles.Lookup packageAccess) TypeBuilder(String name, int modifiers, MethodHandles.Lookup packageAccess) -
Method Summary
Modifier and TypeMethodDescription<P,R> R accept(TypeVisitor<P, R> visitor, P parameter) voidaddCustomAnnotation(AnnotationBuilder<? extends Annotation> annotation) (package private) voidaddMethodToList(MethodBuilder methodBuilder) private Annotation[]private voidcreateBridgeMethod(TypeBuilder.MethodOverride methodOverride) private voidcreateType(File outputFile) createType(OutputStream outputStream) createTypeNoLock(OutputStream writeTo) static MethodHandles.Lookupprivate static MethodHandleprivate static MethodHandledefineConstant(String name, Type<?> type, int modifiers, Object constantValue) defineConstructor(int modifiers, TypeList parameterTypes) defineConstructor(int modifiers, TypeList parameterTypes, TypeList thrownTypes) defineDefaultConstructor(int modifiers) defineField(String name, Type<?> type, int modifiers) private FieldBuilderdefineFieldCore(String name, Type<?> type, int modifiers, Object constantValue) defineGenericParameters(String... names) defineMethod(String name, int modifiers) defineMethod(String name, int modifiers, Type<?> returnType) defineMethod(String name, int modifiers, Type<?> returnType, TypeList parameterTypes) defineMethod(String name, int modifiers, Type<?> returnType, TypeList parameterTypes, TypeList thrownTypes) private MethodBuilderdefineMethodCore(String name, int modifiers, Type<?> returnType, TypeList parameterTypes, TypeList thrownTypes) voiddefineMethodOverride(MethodInfo override, MethodInfo baseMethod) private static Type<?> private static MethodHandles.Lookupprivate static MemberInfofindPackageAccessDeclaration(Type<?> start, Function<Type<?>, Type<?>> next) <A extends Annotation>
AgetAnnotation(Class<A> annotationClass) protected Stringprotected String(package private) shortgetConstantToken(double value) (package private) shortgetConstantToken(float value) (package private) shortgetConstantToken(int value) (package private) shortgetConstantToken(long value) getConstructor(Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) getConstructors(Set<BindingFlags> bindingFlags) ReadOnlyList<AnnotationBuilder<? extends Annotation>> TypeBuilder<?> private OutputStreamType<?> getField(String name, Set<BindingFlags> bindingFlags) getFields(Set<BindingFlags> bindingFlags) (package private) shortgetFieldToken(FieldInfo field) intType<?> MemberList<?> getMember(String name, Set<BindingFlags> bindingFlags, Set<MemberType> memberTypes) MemberList<?> getMembers(Set<BindingFlags> bindingFlags, Set<MemberType> memberTypes) getMethod(String name, Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) getMethods(Set<BindingFlags> bindingFlags, CallingConvention callingConvention) (package private) shortgetMethodToken(MethodBase method) intgetName()Type<?> getNestedType(String fullName, Set<BindingFlags> bindingFlags) getNestedTypes(Set<BindingFlags> bindingFlags) Type<?> (package private) shortgetStringToken(String value) protected TypeBindings(package private) shortgetTypeToken(Type<?> type) (package private) shortgetUtf8StringToken(String value) private voidinitialize(String typeName, int modifiers, Type<?> baseType, TypeList interfaces, TypeBuilder<?> declaringType, MethodHandles.Lookup packageAccess) private voidinitializeAsGenericParameter(String name, int position) booleanisAnnotationPresent(Class<? extends Annotation> annotationClass) booleanisAssignableFrom(Type<?> type) private booleanisBridgeMethodNeeded(TypeBuilder.MethodOverride methodOverride) (package private) static booleanisBridgeMethodNeeded(MethodInfo baseMethod, MethodInfo override) booleanbooleanisEquivalentTo(Type<?> other) booleanbooleanbooleanbooleanisInstance(Object o) protected Type<?> makeGenericTypeCore(TypeList typeArguments) private static MethodHandleprivate MethodHandles.LookupresolvePackageAccess(MethodHandles.Lookup explicitValue) voidsetBaseType(Type<?> baseType) voidsetInterfaces(TypeList interfaces) static MethodHandles.LookuptryResolvePackageAccessForClass(Type<?> type) private static MethodHandleprivate voidprivate void(package private) void(package private) void(package private) voidMethods inherited from class com.strobel.reflection.Type
_appendClassDescription, _appendClassName, _appendClassSignature, _appendErasedClassSignature, appendBriefDescription, appendDescription, appendGenericSignature, appendSimpleDescription, asSuperTypeOf, bottomType, containsGenericParameter, containsGenericParameters, createArrayType, findMembers, forName, forName, getConstructor, getConstructor, getConstructors, getDeclaredConstructors, getDeclaredFields, getDeclaredMethods, getDeclaredTypes, getElementType, getEnumConstants, getEnumNames, getErasedType, getField, getFields, getGenericSignature, getGenericTypeParameters, getInterfaces, getKind, getMember, getMember, getMembers, getMembers, getMembers, getMembers, getMembersOfType, getMemberType, getMethod, getMethod, getMethods, getMethods, getNestedType, getNestedTypes, getSuperBound, getType, getTypeArguments, getUnderlyingType, getUnderlyingTypeCore, hasElementType, hasExtendsBound, hashCode, hasSuperBound, implementsInterface, invalidateCaches, isAbstract, isArray, isBoundedType, isClass, isCompoundType, isEnum, isEquivalentTo, isInterface, isLocalClass, isNested, isPrimitive, isRawType, isSubTypeOf, isSynthetic, isUnbounded, isVisible, isWildcardType, list, list, list, makeArrayType, makeArrayType, makeCompoundType, makeCompoundType, makeExtendsWildcard, makeGenericType, makeGenericType, makeSuperWildcard, makeWildcard, newInstance, nullType, of, substitute, toString, unboundedWildcardMethods inherited from class com.strobel.reflection.MemberInfo
emptyAnnotations, equals, getAnnotationsByType, getBriefDescription, getDeclaredAnnotation, getDeclaredAnnotationsByType, getDescription, getErasedDescription, getErasedSignature, getSignature, getSimpleDescription, isFinal, isNonPublic, isPackagePrivate, isPrivate, isProtected, isPublic, isStaticMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.reflect.Type
getTypeName
-
Field Details
-
DumpGeneratedClassesProperty
- See Also:
-
GeneratedClassOutputPathProperty
- See Also:
-
VerifyGeneratedClassesProperty
- See Also:
-
constantPool
-
constructorBuilders
-
methodBuilders
-
fieldBuilders
-
genericParameterBuilders
-
methodOverrides
-
_name
-
_fullName
-
_internalName
-
_package
-
_baseType
-
_constructors
-
_methods
-
_fields
-
_interfaces
-
_declaringType
-
_declaringMethod
-
_modifiers
private int _modifiers -
_hasBeenCreated
private boolean _hasBeenCreated -
_generatedClass
-
_generatedType
-
_extendsBound
-
_genericParameterPosition
private int _genericParameterPosition -
_isGenericParameter
private boolean _isGenericParameter -
_isGenericTypeDefinition
private boolean _isGenericTypeDefinition -
_typeBindings
-
_annotations
-
_annotationMap
-
_protectionDomain
-
_declarationSite
-
_packageAccess
-
RawMethodMatcher
-
_defineClass
-
-
Constructor Details
-
TypeBuilder
-
TypeBuilder
-
TypeBuilder
-
TypeBuilder
public TypeBuilder(String name, int modifiers, Type<?> baseType, TypeList interfaces, MethodHandles.Lookup packageAccess) -
TypeBuilder
TypeBuilder() -
TypeBuilder
TypeBuilder(String name, int genericParameterPosition, TypeBuilder<?> declaringType) -
TypeBuilder
TypeBuilder(String name, int genericParameterPosition, MethodBuilder declaringMethod) -
TypeBuilder
TypeBuilder(String name, int modifiers, Type<?> baseType, TypeBuilder<?> declaringType) -
TypeBuilder
TypeBuilder(String name, int modifiers, Type<? super T> baseType, TypeList interfaces, TypeBuilder<?> declaringType) -
TypeBuilder
TypeBuilder(String name, int modifiers, Type<? super T> baseType, TypeList interfaces, TypeBuilder<?> declaringType, MethodHandles.Lookup packageAccess)
-
-
Method Details
-
defaultPackageAccess
-
initializeAsGenericParameter
-
initialize
private void initialize(String typeName, int modifiers, Type<?> baseType, TypeList interfaces, TypeBuilder<?> declaringType, MethodHandles.Lookup packageAccess) -
resolvePackageAccess
-
tryResolvePackageAccessForClass
-
extractPackageAccess
-
findPackageAccessDeclaration
private static MemberInfo findPackageAccessDeclaration(Type<?> start, Function<Type<?>, Type<?>> next) -
setInterfaces
-
setBaseType
-
updateExtendsBound
private void updateExtendsBound() -
verifyNotCreated
void verifyNotCreated() -
verifyCreated
void verifyCreated() -
verifyNotGeneric
void verifyNotGeneric() -
getPackage
- Overrides:
getPackagein classType<T>
-
getReflectedType
- Overrides:
getReflectedTypein classMemberInfo
-
getDeclaringMethod
- Overrides:
getDeclaringMethodin classType<T>
-
getClassSimpleName
- Overrides:
getClassSimpleNamein classType<T>
-
getClassFullName
- Overrides:
getClassFullNamein classType<T>
-
getShortName
- Overrides:
getShortNamein classType<T>
-
getName
-
getFullName
- Overrides:
getFullNamein classType<T>
-
getInternalName
- Overrides:
getInternalNamein classType<T>
-
appendErasedDescription
- Overrides:
appendErasedDescriptionin classType<T>
-
appendErasedSignature
- Overrides:
appendErasedSignaturein classType<T>
-
appendSignature
- Overrides:
appendSignaturein classType<T>
-
getBaseType
- Overrides:
getBaseTypein classType<T>
-
getExplicitInterfaces
- Overrides:
getExplicitInterfacesin classType<T>
-
getDeclaringType
- Specified by:
getDeclaringTypein classMemberInfo
-
getModifiers
public int getModifiers()- Specified by:
getModifiersin classMemberInfo
-
isEquivalentTo
- Overrides:
isEquivalentToin classType<T>
-
isInstance
- Overrides:
isInstancein classType<T>
-
isGenericParameter
public boolean isGenericParameter()- Overrides:
isGenericParameterin classType<T>
-
isGenericType
public boolean isGenericType()- Overrides:
isGenericTypein classType<T>
-
isGenericTypeDefinition
public boolean isGenericTypeDefinition()- Overrides:
isGenericTypeDefinitionin classType<T>
-
getGenericParameterPosition
public int getGenericParameterPosition()- Overrides:
getGenericParameterPositionin classType<T>
-
getGenericTypeDefinition
- Overrides:
getGenericTypeDefinitionin classType<T>
-
getTypeBindings
- Overrides:
getTypeBindingsin classType<T>
-
getExtendsBound
- Overrides:
getExtendsBoundin classType<T>
-
isAssignableFrom
- Overrides:
isAssignableFromin classType<T>
-
getConstructor
public ConstructorInfo getConstructor(Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) - Overrides:
getConstructorin classType<T>
-
getConstructors
- Overrides:
getConstructorsin classType<T>
-
getMembers
- Overrides:
getMembersin classType<T>
-
getMember
public MemberList<?> getMember(String name, Set<BindingFlags> bindingFlags, Set<MemberType> memberTypes) -
getMethod
public MethodInfo getMethod(String name, Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) -
getMethods
- Overrides:
getMethodsin classType<T>
-
getNestedType
- Overrides:
getNestedTypein classType<T>
-
getNestedTypes
- Overrides:
getNestedTypesin classType<T>
-
getFields
-
getField
-
getErasedClass
- Overrides:
getErasedClassin classType<T>
-
accept
-
addCustomAnnotation
-
getCustomAnnotations
-
getAnnotation
- Specified by:
getAnnotationin interfaceAnnotatedElement- Overrides:
getAnnotationin classType<T>
-
getAnnotations
- Specified by:
getAnnotationsin interfaceAnnotatedElement- Overrides:
getAnnotationsin classType<T>
-
bakeAnnotations
-
getDeclaredAnnotations
- Specified by:
getDeclaredAnnotationsin interfaceAnnotatedElement- Overrides:
getDeclaredAnnotationsin classType<T>
-
isAnnotationPresent
- Specified by:
isAnnotationPresentin interfaceAnnotatedElement- Overrides:
isAnnotationPresentin classType<T>
-
makeGenericTypeCore
- Overrides:
makeGenericTypeCorein classType<T>
-
isCreated
public boolean isCreated() -
createType
-
createType
-
createType
-
defineConstructor
-
defineConstructor
public ConstructorBuilder defineConstructor(int modifiers, TypeList parameterTypes, TypeList thrownTypes) -
defineDefaultConstructor
-
defineDefaultConstructor
-
addMethodToList
-
defineMethodOverride
-
defineMethod
-
defineMethod
-
defineMethod
public MethodBuilder defineMethod(String name, int modifiers, Type<?> returnType, TypeList parameterTypes) -
defineMethod
public MethodBuilder defineMethod(String name, int modifiers, Type<?> returnType, TypeList parameterTypes, TypeList thrownTypes) -
defineMethodCore
private MethodBuilder defineMethodCore(String name, int modifiers, Type<?> returnType, TypeList parameterTypes, TypeList thrownTypes) -
defineTypeInitializer
-
defineConstant
-
defineField
-
defineFieldCore
private FieldBuilder defineFieldCore(String name, Type<?> type, int modifiers, Object constantValue) -
defineGenericParameters
-
getTypeToken
-
getMethodToken
-
getFieldToken
-
getConstantToken
short getConstantToken(int value) -
getConstantToken
short getConstantToken(long value) -
getConstantToken
short getConstantToken(float value) -
getConstantToken
short getConstantToken(double value) -
getStringToken
-
getUtf8StringToken
-
erase
-
createTypeNoLock
- Throws:
IOException
-
createBridgeMethods
private void createBridgeMethods() -
createBridgeMethod
-
isBridgeMethodNeeded
-
isBridgeMethodNeeded
-
getDefaultOutputStream
-
updateMembersWithGeneratedReferences
private void updateMembersWithGeneratedReferences() -
defineClass
-
defineClass0
-
mhLookupDefineClass0
-
unsafeDefineClass0
- Throws:
ReflectiveOperationException
-