Package io.github.classgraph
Class ClassRefTypeSignature
A class reference type signature (called "ClassTypeSignature" in the classfile documentation).
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final String
The class name.Type suffixes.private List
<AnnotationInfoList> The suffix type annotations.private final List
<List<TypeArgument>> The suffix type arguments.private final List
<TypeArgument> The class type arguments.Fields inherited from class io.github.classgraph.HierarchicalTypeSignature
typeAnnotationInfo
Fields inherited from class io.github.classgraph.ScanResultObject
classRef, scanResult
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
ClassRefTypeSignature
(String className, List<TypeArgument> typeArguments, List<String> suffixes, List<List<TypeArgument>> suffixTypeArguments) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addSuffixTypeAnnotation
(int suffixIdx, AnnotationInfo annotationInfo) protected void
addTypeAnnotation
(List<Classfile.TypePathNode> typePath, AnnotationInfo annotationInfo) Add a type annotation to this type.boolean
boolean
Compare base types, ignoring generic type parameters.protected void
findReferencedClassNames
(Set<String> refdClassNames) Get the names of any classes referenced in the type signature.Get the name of the class, without any suffixes.Get theClassInfo
object for the referenced class.protected String
The name of the class (used byScanResultObject.getClassInfo()
to fetch theClassInfo
object for the class).Get the name of the class, formed from the base name and any suffixes (suffixes are for inner class nesting, and are separated by '$'), but without any type arguments.Get all nested suffixes of the class (typically nested inner class names).Get a list of lists of type annotations for all nested suffixes of the class, one list per suffix.Get a list of type arguments for all nested suffixes of the class, one list per suffix.Get any type arguments of the base class.int
hashCode()
Class
<?> Load the referenced class, if not already loaded, returning aClass<?>
reference for the referenced class.Class
<?> loadClass
(boolean ignoreExceptions) Load the referenced class, if not already loaded, returning aClass<?>
reference for the referenced class.(package private) static ClassRefTypeSignature
Parse a class type signature.(package private) void
setScanResult
(ScanResult scanResult) Set ScanResult backreferences in info objects after scan has completed.private static boolean
protected void
toStringInternal
(boolean useSimpleNames, AnnotationInfoList annotationsToExclude, StringBuilder buf) Render type signature to string.Methods inherited from class io.github.classgraph.ReferenceTypeSignature
parseClassBound, parseReferenceTypeSignature
Methods inherited from class io.github.classgraph.TypeSignature
findReferencedClassInfo, getTypeAnnotationInfo, parse
Methods inherited from class io.github.classgraph.HierarchicalTypeSignature
addTypeAnnotation, toString
Methods inherited from class io.github.classgraph.ScanResultObject
findReferencedClassInfo, loadClass, loadClass, toString, toString, toStringWithSimpleNames
-
Field Details
-
className
The class name. -
typeArguments
The class type arguments. -
suffixes
Type suffixes. -
suffixTypeArguments
The suffix type arguments. -
suffixTypeAnnotations
The suffix type annotations.
-
-
Constructor Details
-
ClassRefTypeSignature
private ClassRefTypeSignature(String className, List<TypeArgument> typeArguments, List<String> suffixes, List<List<TypeArgument>> suffixTypeArguments) Constructor.- Parameters:
className
- The class name.typeArguments
- The class type arguments.suffixes
- The class suffixes (for inner classes)suffixTypeArguments
- The suffix type arguments.
-
-
Method Details
-
getBaseClassName
Get the name of the class, without any suffixes.- Returns:
- The name of the class.
- See Also:
-
getFullyQualifiedClassName
Get the name of the class, formed from the base name and any suffixes (suffixes are for inner class nesting, and are separated by '$'), but without any type arguments. For example,"xyz.Cls<String>.InnerCls<Integer>"
is returned as"xyz.Cls$InnerCls"
. The intent of this method is that if you replace '.' with '/', and then add the suffix ".class", you end up with the path of the classfile relative to the package root.For comparison,
ScanResultObject.toString()
uses '.' to separate suffixes, and includes type parameters, whereas this method uses '$' to separate suffixes, and does not include type parameters.- Returns:
- The fully-qualified name of the class, including suffixes but without type arguments.
-
getTypeArguments
Get any type arguments of the base class.- Returns:
- The type arguments for the base class.
-
getSuffixes
Get all nested suffixes of the class (typically nested inner class names).- Returns:
- The class suffixes (for inner classes), or the empty list if none.
-
getSuffixTypeArguments
Get a list of type arguments for all nested suffixes of the class, one list per suffix.- Returns:
- The list of type arguments for the suffixes (nested inner classes), one list per suffix, or the empty list if none.
-
getSuffixTypeAnnotationInfo
Get a list of lists of type annotations for all nested suffixes of the class, one list per suffix.- Returns:
- The list of lists of type annotations for the suffixes (nested inner classes), one list per suffix, or null if none.
-
addSuffixTypeAnnotation
-
addTypeAnnotation
protected void addTypeAnnotation(List<Classfile.TypePathNode> typePath, AnnotationInfo annotationInfo) Description copied from class:TypeSignature
Add a type annotation to this type.- Specified by:
addTypeAnnotation
in classTypeSignature
- Parameters:
typePath
- The type path.annotationInfo
- The annotation to add.
-
loadClass
Load the referenced class, if not already loaded, returning aClass<?>
reference for the referenced class. (Called byAnnotationClassRef.loadClass()
.)- Overrides:
loadClass
in classScanResultObject
- Parameters:
ignoreExceptions
- if true, ignore exceptions and instead return null if the class could not be loaded.- Returns:
- The
Class<?>
reference for the referenced class. - Throws:
IllegalArgumentException
- if the class could not be loaded and ignoreExceptions was false.
-
loadClass
Load the referenced class, if not already loaded, returning aClass<?>
reference for the referenced class. (Called byAnnotationClassRef.loadClass()
.)- Overrides:
loadClass
in classScanResultObject
- Returns:
- The
Class<?>
reference for the referenced class. - Throws:
IllegalArgumentException
- if the class could not be loaded.
-
getClassName
Description copied from class:ScanResultObject
The name of the class (used byScanResultObject.getClassInfo()
to fetch theClassInfo
object for the class).- Specified by:
getClassName
in classScanResultObject
- Returns:
- the fully-qualified class name, for classloading.
-
getClassInfo
Get theClassInfo
object for the referenced class.- Overrides:
getClassInfo
in classScanResultObject
- Returns:
- The
ClassInfo
object for the referenced class, or null if the referenced class was not encountered during scanning (i.e. if no ClassInfo object was created for the class during scanning). N.B. even if this method returns null,loadClass()
may be able to load the referenced class by name.
-
setScanResult
Description copied from class:ScanResultObject
Set ScanResult backreferences in info objects after scan has completed.- Overrides:
setScanResult
in classHierarchicalTypeSignature
- Parameters:
scanResult
- the scan result
-
findReferencedClassNames
Get the names of any classes referenced in the type signature.- Overrides:
findReferencedClassNames
in classTypeSignature
- Parameters:
refdClassNames
- the referenced class names.
-
hashCode
public int hashCode() -
suffixesMatch
-
equals
-
equalsIgnoringTypeParams
Description copied from class:TypeSignature
Compare base types, ignoring generic type parameters.- Specified by:
equalsIgnoringTypeParams
in classTypeSignature
- Parameters:
other
- the otherTypeSignature
to compare to.- Returns:
- True if the two
TypeSignature
objects are equal, ignoring type parameters.
-
toStringInternal
protected void toStringInternal(boolean useSimpleNames, AnnotationInfoList annotationsToExclude, StringBuilder buf) Description copied from class:HierarchicalTypeSignature
Render type signature to string.- Specified by:
toStringInternal
in classHierarchicalTypeSignature
- Parameters:
useSimpleNames
- whether to use simple names for classes.annotationsToExclude
- toplevel annotations to exclude, to eliminate duplication (toplevel annotations are both class/field/method annotations and type annotations).buf
- theStringBuilder
to write to.
-
parse
Parse a class type signature.- Parameters:
parser
- The parser.definingClassName
- The name of the defining class (for resolving type variables).- Returns:
- The class type signature.
- Throws:
ParseException
- If the type signature could not be parsed.
-