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 class
private static final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Map
<Class<? extends Annotation>, AnnotationBuilder<? extends Annotation>> private ReadOnlyList
<AnnotationBuilder<? extends Annotation>> private Type
<?> private ConstructorList
private MethodBuilder
private TypeBuilder
<?> private static MethodHandle
private Type
<?> private FieldList
private String
private int
private boolean
private TypeList
private String
private boolean
private boolean
private MethodList
private int
private String
private Package
private MethodHandles.Lookup
private final ProtectionDomain
private 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 MemberFilter
private static final String
Fields 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) void
addCustomAnnotation
(AnnotationBuilder<? extends Annotation> annotation) (package private) void
addMethodToList
(MethodBuilder methodBuilder) private Annotation[]
private void
createBridgeMethod
(TypeBuilder.MethodOverride methodOverride) private void
createType
(File outputFile) createType
(OutputStream outputStream) createTypeNoLock
(OutputStream writeTo) static MethodHandles.Lookup
private static MethodHandle
private static MethodHandle
defineConstant
(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 FieldBuilder
defineFieldCore
(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 MethodBuilder
defineMethodCore
(String name, int modifiers, Type<?> returnType, TypeList parameterTypes, TypeList thrownTypes) void
defineMethodOverride
(MethodInfo override, MethodInfo baseMethod) private static Type
<?> private static MethodHandles.Lookup
private static MemberInfo
findPackageAccessDeclaration
(Type<?> start, Function<Type<?>, Type<?>> next) <A extends Annotation>
AgetAnnotation
(Class<A> annotationClass) protected String
protected String
(package private) short
getConstantToken
(double value) (package private) short
getConstantToken
(float value) (package private) short
getConstantToken
(int value) (package private) short
getConstantToken
(long value) getConstructor
(Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) getConstructors
(Set<BindingFlags> bindingFlags) ReadOnlyList
<AnnotationBuilder<? extends Annotation>> TypeBuilder
<?> private OutputStream
Type
<?> getField
(String name, Set<BindingFlags> bindingFlags) getFields
(Set<BindingFlags> bindingFlags) (package private) short
getFieldToken
(FieldInfo field) int
Type
<?> 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) short
getMethodToken
(MethodBase method) int
getName()
Type
<?> getNestedType
(String fullName, Set<BindingFlags> bindingFlags) getNestedTypes
(Set<BindingFlags> bindingFlags) Type
<?> (package private) short
getStringToken
(String value) protected TypeBindings
(package private) short
getTypeToken
(Type<?> type) (package private) short
getUtf8StringToken
(String value) private void
initialize
(String typeName, int modifiers, Type<?> baseType, TypeList interfaces, TypeBuilder<?> declaringType, MethodHandles.Lookup packageAccess) private void
initializeAsGenericParameter
(String name, int position) boolean
isAnnotationPresent
(Class<? extends Annotation> annotationClass) boolean
isAssignableFrom
(Type<?> type) private boolean
isBridgeMethodNeeded
(TypeBuilder.MethodOverride methodOverride) (package private) static boolean
isBridgeMethodNeeded
(MethodInfo baseMethod, MethodInfo override) boolean
boolean
isEquivalentTo
(Type<?> other) boolean
boolean
boolean
boolean
isInstance
(Object o) protected Type
<?> makeGenericTypeCore
(TypeList typeArguments) private static MethodHandle
private MethodHandles.Lookup
resolvePackageAccess
(MethodHandles.Lookup explicitValue) void
setBaseType
(Type<?> baseType) void
setInterfaces
(TypeList interfaces) static MethodHandles.Lookup
tryResolvePackageAccessForClass
(Type<?> type) private static MethodHandle
private void
private void
(package private) void
(package private) void
(package private) void
Methods 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, unboundedWildcard
Methods inherited from class com.strobel.reflection.MemberInfo
emptyAnnotations, equals, getAnnotationsByType, getBriefDescription, getDeclaredAnnotation, getDeclaredAnnotationsByType, getDescription, getErasedDescription, getErasedSignature, getSignature, getSimpleDescription, isFinal, isNonPublic, isPackagePrivate, isPrivate, isProtected, isPublic, isStatic
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods 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:
getPackage
in classType<T>
-
getReflectedType
- Overrides:
getReflectedType
in classMemberInfo
-
getDeclaringMethod
- Overrides:
getDeclaringMethod
in classType<T>
-
getClassSimpleName
- Overrides:
getClassSimpleName
in classType<T>
-
getClassFullName
- Overrides:
getClassFullName
in classType<T>
-
getShortName
- Overrides:
getShortName
in classType<T>
-
getName
-
getFullName
- Overrides:
getFullName
in classType<T>
-
getInternalName
- Overrides:
getInternalName
in classType<T>
-
appendErasedDescription
- Overrides:
appendErasedDescription
in classType<T>
-
appendErasedSignature
- Overrides:
appendErasedSignature
in classType<T>
-
appendSignature
- Overrides:
appendSignature
in classType<T>
-
getBaseType
- Overrides:
getBaseType
in classType<T>
-
getExplicitInterfaces
- Overrides:
getExplicitInterfaces
in classType<T>
-
getDeclaringType
- Specified by:
getDeclaringType
in classMemberInfo
-
getModifiers
public int getModifiers()- Specified by:
getModifiers
in classMemberInfo
-
isEquivalentTo
- Overrides:
isEquivalentTo
in classType<T>
-
isInstance
- Overrides:
isInstance
in classType<T>
-
isGenericParameter
public boolean isGenericParameter()- Overrides:
isGenericParameter
in classType<T>
-
isGenericType
public boolean isGenericType()- Overrides:
isGenericType
in classType<T>
-
isGenericTypeDefinition
public boolean isGenericTypeDefinition()- Overrides:
isGenericTypeDefinition
in classType<T>
-
getGenericParameterPosition
public int getGenericParameterPosition()- Overrides:
getGenericParameterPosition
in classType<T>
-
getGenericTypeDefinition
- Overrides:
getGenericTypeDefinition
in classType<T>
-
getTypeBindings
- Overrides:
getTypeBindings
in classType<T>
-
getExtendsBound
- Overrides:
getExtendsBound
in classType<T>
-
isAssignableFrom
- Overrides:
isAssignableFrom
in classType<T>
-
getConstructor
public ConstructorInfo getConstructor(Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) - Overrides:
getConstructor
in classType<T>
-
getConstructors
- Overrides:
getConstructors
in classType<T>
-
getMembers
- Overrides:
getMembers
in 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:
getMethods
in classType<T>
-
getNestedType
- Overrides:
getNestedType
in classType<T>
-
getNestedTypes
- Overrides:
getNestedTypes
in classType<T>
-
getFields
-
getField
-
getErasedClass
- Overrides:
getErasedClass
in classType<T>
-
accept
-
addCustomAnnotation
-
getCustomAnnotations
-
getAnnotation
- Specified by:
getAnnotation
in interfaceAnnotatedElement
- Overrides:
getAnnotation
in classType<T>
-
getAnnotations
- Specified by:
getAnnotations
in interfaceAnnotatedElement
- Overrides:
getAnnotations
in classType<T>
-
bakeAnnotations
-
getDeclaredAnnotations
- Specified by:
getDeclaredAnnotations
in interfaceAnnotatedElement
- Overrides:
getDeclaredAnnotations
in classType<T>
-
isAnnotationPresent
- Specified by:
isAnnotationPresent
in interfaceAnnotatedElement
- Overrides:
isAnnotationPresent
in classType<T>
-
makeGenericTypeCore
- Overrides:
makeGenericTypeCore
in 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
-