Interface ByteCodeElement
- All Superinterfaces:
AnnotationSource, DeclaredByType, ModifierReviewable, ModifierReviewable.OfByteCodeElement, NamedElement, NamedElement.WithDescriptor, NamedElement.WithRuntimeName
- All Known Subinterfaces:
ByteCodeElement.Member, FieldDescription, FieldDescription.InDefinedShape, FieldDescription.InGenericShape, InstrumentedType, InstrumentedType.WithFlexibleName, MethodDescription, MethodDescription.InDefinedShape, MethodDescription.InGenericShape, TypeDescription
- All Known Implementing Classes:
FieldDescription.AbstractBase, FieldDescription.ForLoadedField, FieldDescription.InDefinedShape.AbstractBase, FieldDescription.Latent, FieldDescription.TypeSubstituting, Implementation.Context.Default.AbstractPropertyAccessorMethod, Implementation.Context.Default.AccessorMethod, Implementation.Context.Default.CacheValueField, Implementation.Context.Default.FieldGetter, Implementation.Context.Default.FieldSetter, InstrumentedType.Default, InstrumentedType.Frozen, JavaType.LatentTypeWithSimpleName, MethodDescription.AbstractBase, MethodDescription.ForLoadedConstructor, MethodDescription.ForLoadedMethod, MethodDescription.InDefinedShape.AbstractBase, MethodDescription.InDefinedShape.AbstractBase.ForLoadedExecutable, MethodDescription.Latent, MethodDescription.Latent.TypeInitializer, MethodDescription.TypeSubstituting, MethodRebaseResolver.Resolution.ForRebasedConstructor.RebasedConstructor, MethodRebaseResolver.Resolution.ForRebasedMethod.RebasedMethod, Transformer.ForField.TransformedField, Transformer.ForMethod.TransformedMethod, TypeDescription.AbstractBase, TypeDescription.AbstractBase.OfSimpleType, TypeDescription.AbstractBase.OfSimpleType.WithDelegation, TypeDescription.ArrayProjection, TypeDescription.ForLoadedType, TypeDescription.ForPackageDescription, TypeDescription.Latent, TypeDescription.SuperTypeLoading, TypePool.Default.LazyTypeDescription, TypePool.Default.LazyTypeDescription.LazyFieldDescription, TypePool.Default.LazyTypeDescription.LazyMethodDescription, TypePool.Default.WithLazyResolution.ExtendedLazyTypeDescription, TypePool.Default.WithLazyResolution.LazyTypeDescription, TypePool.LazyFacade.LazyTypeDescription, TypeWriter.MethodPool.Record.AccessBridgeWrapper.AccessorBridge, TypeWriter.MethodPool.Record.AccessBridgeWrapper.BridgeTarget, TypeWriter.MethodPool.Record.ForDefinedMethod.OfVisibilityBridge.VisibilityBridge
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceA byte code element that is declared by a type.static interfaceByteCodeElement.Token<T extends ByteCodeElement.Token<T>>A token representing a byte code element.static interfaceByteCodeElement.TypeDependant<T extends ByteCodeElement.TypeDependant<?,S>, S extends ByteCodeElement.Token<S>> A type dependant describes an element that is an extension of a type definition, i.e.Nested classes/interfaces inherited from interface AnnotationSource
AnnotationSource.Empty, AnnotationSource.ExplicitNested classes/interfaces inherited from interface DeclaredByType
DeclaredByType.WithMandatoryDeclarationNested classes/interfaces inherited from interface ModifierReviewable
ModifierReviewable.AbstractBase, ModifierReviewable.ForFieldDescription, ModifierReviewable.ForMethodDescription, ModifierReviewable.ForModuleDescription, ModifierReviewable.ForModuleRequirement, ModifierReviewable.ForParameterDescription, ModifierReviewable.ForTypeDefinition, ModifierReviewable.OfAbstraction, ModifierReviewable.OfByteCodeElement, ModifierReviewable.OfEnumeration, ModifierReviewable.OfMandatableNested classes/interfaces inherited from interface NamedElement
NamedElement.WithDescriptor, NamedElement.WithGenericName, NamedElement.WithOptionalName, NamedElement.WithRuntimeName -
Field Summary
Fields inherited from interface ModifierReviewable
EMPTY_MASKFields inherited from interface NamedElement
EMPTY_NAME, NO_NAMEFields inherited from interface NamedElement.WithDescriptor
NON_GENERIC_SIGNATURE -
Method Summary
Modifier and TypeMethodDescriptionbooleanisAccessibleTo(TypeDescription typeDescription) Checks if this element is accessible from a given type.booleanisVisibleTo(TypeDescription typeDescription) Checks if this element is visible from a given type.Methods inherited from interface AnnotationSource
getDeclaredAnnotationsMethods inherited from interface DeclaredByType
getDeclaringTypeMethods inherited from interface ModifierReviewable
getModifiers, getSyntheticState, isFinal, isSyntheticMethods inherited from interface ModifierReviewable.OfByteCodeElement
getOwnership, getVisibility, isDeprecated, isPackagePrivate, isPrivate, isProtected, isPublic, isStaticMethods inherited from interface NamedElement
getActualNameMethods inherited from interface NamedElement.WithDescriptor
getDescriptor, getGenericSignatureMethods inherited from interface NamedElement.WithRuntimeName
getInternalName, getName
-
Method Details
-
isVisibleTo
Checks if this element is visible from a given type. Visibility is a wider criteria then accessibility which can be checked by
isAccessibleTo(TypeDescription). Visibility allows the invocation of a method on itself or on external instances.Note: A method or field might define a signature that includes types that are not visible to a type. Such methods can be legally invoked from this type and can even be implemented as bridge methods by this type. It is however not legal to declare a method with invisible types in its signature that are not bridges what might require additional validation.
Important: Virtual byte code elements, i.e. virtual methods, are only considered visible if the type they are invoked upon is visible to a given type. The visibility of such virtual members can therefore not be determined by only investigating the invoked method but requires an additional check of the target type.
- Parameters:
typeDescription- The type which is checked for its visibility of this element.- Returns:
trueif this element is visible fortypeDescription.
-
isAccessibleTo
Checks if this element is accessible from a given type. Accessibility is a more narrow criteria then visibility which can be checked by
isVisibleTo(TypeDescription). Accessibility allows the invocation of a method on external instances or on itself. Methods that can be invoked from within an instance might however not be considered accessible.Note: A method or field might define a signature that includes types that are not visible to a type. Such methods can be legally invoked from this type and can even be implemented as bridge methods by this type. It is however not legal to declare a method with invisible types in its signature that are not bridges what might require additional validation.
Important: Virtual byte code elements, i.e. virtual methods, are only considered visible if the type they are invoked upon is visible to a given type. The visibility of such virtual members can therefore not be determined by only investigating the invoked method but requires an additional check of the target type.
- Parameters:
typeDescription- The type which is checked for its accessibility of this element.- Returns:
trueif this element is accessible fortypeDescription.
-