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
public interface ByteCodeElement extends NamedElement.WithRuntimeName, NamedElement.WithDescriptor, ModifierReviewable.OfByteCodeElement, DeclaredByType, AnnotationSource
Implementations describe an element represented in byte code, i.e. a type, a field or a method or a constructor.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interfaceByteCodeElement.MemberA 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 net.bytebuddy.description.annotation.AnnotationSource
AnnotationSource.Empty, AnnotationSource.Explicit
-
Nested classes/interfaces inherited from interface net.bytebuddy.description.DeclaredByType
DeclaredByType.WithMandatoryDeclaration
-
Nested classes/interfaces inherited from interface net.bytebuddy.description.ModifierReviewable
ModifierReviewable.AbstractBase, ModifierReviewable.ForFieldDescription, ModifierReviewable.ForMethodDescription, ModifierReviewable.ForModuleDescription, ModifierReviewable.ForModuleRequirement, ModifierReviewable.ForParameterDescription, ModifierReviewable.ForTypeDefinition, ModifierReviewable.OfAbstraction, ModifierReviewable.OfByteCodeElement, ModifierReviewable.OfEnumeration, ModifierReviewable.OfMandatable
-
Nested classes/interfaces inherited from interface net.bytebuddy.description.NamedElement
NamedElement.WithDescriptor, NamedElement.WithGenericName, NamedElement.WithOptionalName, NamedElement.WithRuntimeName
-
-
Field Summary
-
Fields inherited from interface net.bytebuddy.description.ModifierReviewable
EMPTY_MASK
-
Fields inherited from interface net.bytebuddy.description.NamedElement
EMPTY_NAME, NO_NAME
-
Fields inherited from interface net.bytebuddy.description.NamedElement.WithDescriptor
NON_GENERIC_SIGNATURE
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description booleanisAccessibleTo(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 net.bytebuddy.description.annotation.AnnotationSource
getDeclaredAnnotations
-
Methods inherited from interface net.bytebuddy.description.DeclaredByType
getDeclaringType
-
Methods inherited from interface net.bytebuddy.description.ModifierReviewable
getModifiers, getSyntheticState, isFinal, isSynthetic
-
Methods inherited from interface net.bytebuddy.description.ModifierReviewable.OfByteCodeElement
getOwnership, getVisibility, isDeprecated, isPackagePrivate, isPrivate, isProtected, isPublic, isStatic
-
Methods inherited from interface net.bytebuddy.description.NamedElement
getActualName
-
Methods inherited from interface net.bytebuddy.description.NamedElement.WithDescriptor
getDescriptor, getGenericSignature
-
Methods inherited from interface net.bytebuddy.description.NamedElement.WithRuntimeName
getInternalName, getName
-
-
-
-
Method Detail
-
isVisibleTo
boolean isVisibleTo(TypeDescription typeDescription)
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
boolean isAccessibleTo(TypeDescription typeDescription)
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.
-
-