Class MethodInfo
java.lang.Object
io.github.classgraph.ScanResultObject
io.github.classgraph.ClassMemberInfo
io.github.classgraph.MethodInfo
- All Implemented Interfaces:
HasName, Comparable<MethodInfo>
Holds metadata about methods of a class encountered during a scan. All values are taken directly out of the
classfile for the class.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanTrue if this method has a body.private intThe maximum line number for the body of this method, or 0 if unknown.private intThe minimum line number for the body of this method, or 0 if unknown.(package private) AnnotationInfo[][]Unaligned parameter annotations.private MethodParameterInfo[]Aligned method parameter info.private int[]Unaligned parameter modifiers.private String[]Unaligned parameter names.private String[]private ClassInfoListThe type annotation decorators for theMethodTypeSignatureinstance.private MethodTypeSignatureThe parsed type descriptor.private MethodTypeSignatureThe parsed type signature (or null if none).Fields inherited from class ClassMemberInfo
annotationInfo, declaringClassName, modifiers, name, typeDescriptorStr, typeSignatureStrFields inherited from class ScanResultObject
classRef, scanResult -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor for deserialization.MethodInfo(String definingClassName, String methodName, AnnotationInfoList methodAnnotationInfo, int modifiers, String typeDescriptorStr, String typeSignatureStr, String[] parameterNames, int[] parameterModifiers, AnnotationInfo[][] parameterAnnotationInfo, boolean hasBody, int minLineNum, int maxLineNum, List<Classfile.MethodTypeAnnotationDecorator> methodTypeAnnotationDecorators, String[] thrownExceptionNames) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionintcompareTo(MethodInfo other) Sort in order of class name, method name, then type descriptor.booleanTest class name, method name and type descriptor for equals().protected voidfindReferencedClassInfo(Map<String, ClassInfo> classNameToClassInfo, Set<ClassInfo> refdClassInfo, LogNode log) GetClassInfoobjects for any classes referenced in the type descriptor or type signature.intThe line number of the last non-empty line in the body of this method, or 0 if unknown.intThe line number of the first non-empty line in the body of this method, or 0 if unknown.Get the method modifiers as a String, e.g.getName()Returns the name of the method.Get the available information on method parameters.String[]Returns the exceptions thrown by the method, as an array.Returns the list of exceptions thrown by the method, as aClassInfoList.Returns the parsed type descriptor for the method, which will not include type parameters.Returns the parsed type signature for the method, possibly including type parameters.Returns the parsed type signature for the method, possibly including type parameters.(package private) voidhandleRepeatableAnnotations(Set<String> allRepeatableAnnotationNames) HandleRepeatableannotations.booleanhasBody()Returns true if this method has a body (i.e.inthashCode()Use hashcode of class name, method name and type descriptor.booleanhasParameterAnnotation(Class<? extends Annotation> annotation) Check if this method has a parameter with the annotation.booleanhasParameterAnnotation(String annotationName) Check if this method has a parameter with the named annotation.booleanReturns true if this method is abstract.booleanisBridge()Returns true if this method is a bridge method.booleanReturns true if this method is a constructor.booleanReturns true if this is a default method (i.e.booleanisNative()Returns true if this method is a native method.booleanisStrict()Returns true if this method is strict.booleanReturns true if this method is synchronized.booleanReturns true if this method is a varargs method.Constructor<?> Load the class this constructor is associated with, and get theConstructorreference for this constructor.Load the class this method is associated with, and get theMethodreference for this method.private Class<?>[]Load and return the classes of each of the method parameters.(package private) voidsetScanResult(ScanResult scanResult) Set ScanResult backreferences in info objects after scan has completed.protected voidtoString(boolean useSimpleNames, StringBuilder buf) Get a string representation of the method.Methods inherited from class ClassMemberInfo
getAnnotationInfo, getAnnotationInfo, getAnnotationInfo, getAnnotationInfoRepeatable, getAnnotationInfoRepeatable, getClassInfo, getClassName, getModifiers, getTypeDescriptorStr, getTypeSignatureOrTypeDescriptorStr, getTypeSignatureStr, hasAnnotation, hasAnnotation, isFinal, isPrivate, isProtected, isPublic, isStatic, isSyntheticMethods inherited from class ScanResultObject
findReferencedClassInfo, loadClass, loadClass, loadClass, loadClass, toString, toString, toStringWithSimpleNames
-
Field Details
-
typeDescriptor
The parsed type descriptor. -
typeSignature
The parsed type signature (or null if none). Method parameter types are unaligned. -
parameterNames
Unaligned parameter names. These are only produced in JDK8+, and only if the commandline switch `-parameters` is provided at compiletime. -
parameterModifiers
private int[] parameterModifiersUnaligned parameter modifiers. These are only produced in JDK8+, and only if the commandline switch `-parameters` is provided at compiletime. -
parameterAnnotationInfo
AnnotationInfo[][] parameterAnnotationInfoUnaligned parameter annotations. -
parameterInfo
Aligned method parameter info. -
hasBody
private boolean hasBodyTrue if this method has a body. -
minLineNum
private int minLineNumThe minimum line number for the body of this method, or 0 if unknown. -
maxLineNum
private int maxLineNumThe maximum line number for the body of this method, or 0 if unknown. -
typeAnnotationDecorators
The type annotation decorators for theMethodTypeSignatureinstance. -
thrownExceptionNames
-
thrownExceptions
-
-
Constructor Details
-
MethodInfo
MethodInfo()Default constructor for deserialization. -
MethodInfo
MethodInfo(String definingClassName, String methodName, AnnotationInfoList methodAnnotationInfo, int modifiers, String typeDescriptorStr, String typeSignatureStr, String[] parameterNames, int[] parameterModifiers, AnnotationInfo[][] parameterAnnotationInfo, boolean hasBody, int minLineNum, int maxLineNum, List<Classfile.MethodTypeAnnotationDecorator> methodTypeAnnotationDecorators, String[] thrownExceptionNames) Constructor.- Parameters:
definingClassName- The name of the enclosing class.methodName- The name of the method.methodAnnotationInfo- The list ofAnnotationInfoobjects for any annotations on the method.modifiers- The method modifier bits.typeDescriptorStr- The internal method type descriptor string.typeSignatureStr- The internal method type signature string, or null if none.parameterNames- The parameter names.parameterModifiers- The parameter modifiers.parameterAnnotationInfo- The parameterAnnotationInfo.hasBody- True if this method has a body.minLineNum- The minimum line number for the body of this method, or 0 if unknown.maxLineNum- The maximum line number for the body of this method, or 0 if unknown.methodTypeAnnotationDecorators- Decorator lambdas for method type annotations.thrownExceptionNames- exceptions thrown by this method.
-
-
Method Details
-
getName
Returns the name of the method. Note that constructors are named"<init>", and private static class initializer blocks are named"<clinit>".- Specified by:
getNamein interfaceHasName- Overrides:
getNamein classClassMemberInfo- Returns:
- The name of the method.
-
getModifiersStr
Get the method modifiers as a String, e.g. "public static final". For the modifier bits, callClassMemberInfo.getModifiers().- Specified by:
getModifiersStrin classClassMemberInfo- Returns:
- The modifiers for the method, as a String.
-
getTypeDescriptor
Returns the parsed type descriptor for the method, which will not include type parameters. If you need generic type parameters, callgetTypeSignature()instead.- Specified by:
getTypeDescriptorin classClassMemberInfo- Returns:
- The parsed type descriptor for the method.
-
getTypeSignature
Returns the parsed type signature for the method, possibly including type parameters. If this returns null, indicating that no type signature information is available for this method, callgetTypeDescriptor()instead.- Specified by:
getTypeSignaturein classClassMemberInfo- Returns:
- The parsed type signature for the method, or null if not available.
- Throws:
IllegalArgumentException- if the method type signature cannot be parsed (this should only be thrown in the case of classfile corruption, or a compiler bug that causes an invalid type signature to be written to the classfile).
-
getTypeSignatureOrTypeDescriptor
Returns the parsed type signature for the method, possibly including type parameters. If the type signature string is null, indicating that no type signature information is available for this method, returns the parsed type descriptor instead.- Specified by:
getTypeSignatureOrTypeDescriptorin classClassMemberInfo- Returns:
- The parsed type signature for the method, or if not available, the parsed type descriptor for the method.
-
getThrownExceptions
Returns the list of exceptions thrown by the method, as aClassInfoList.- Returns:
- The list of exceptions thrown by the method, as a
ClassInfoList(the list may be empty).
-
getThrownExceptionNames
Returns the exceptions thrown by the method, as an array.- Returns:
- The exceptions thrown by the method, as an array (the array may be empty).
-
isConstructor
public boolean isConstructor()Returns true if this method is a constructor. Constructors have the method name"<init>". This returns false for private static class initializer blocks, which are named"<clinit>".- Returns:
- True if this method is a constructor.
-
isSynchronized
public boolean isSynchronized()Returns true if this method is synchronized.- Returns:
- True if this method is synchronized.
-
isBridge
public boolean isBridge()Returns true if this method is a bridge method.- Returns:
- True if this is a bridge method.
-
isVarArgs
public boolean isVarArgs()Returns true if this method is a varargs method.- Returns:
- True if this is a varargs method.
-
isNative
public boolean isNative()Returns true if this method is a native method.- Returns:
- True if this method is native.
-
isAbstract
public boolean isAbstract()Returns true if this method is abstract.- Returns:
- True if this method is abstract.
-
isStrict
public boolean isStrict()Returns true if this method is strict.- Returns:
- True if this method is strict.
-
hasBody
public boolean hasBody()Returns true if this method has a body (i.e. has an implementation in the containing class).- Returns:
- True if this method has a body.
-
getMinLineNum
public int getMinLineNum()The line number of the first non-empty line in the body of this method, or 0 if unknown.- Returns:
- The line number of the first non-empty line in the body of this method, or 0 if unknown.
-
getMaxLineNum
public int getMaxLineNum()The line number of the last non-empty line in the body of this method, or 0 if unknown.- Returns:
- The line number of the last non-empty line in the body of this method, or 0 if unknown.
-
isDefault
public boolean isDefault()Returns true if this is a default method (i.e. if this is a method in an interface and the method has a body).- Returns:
- True if this is a default method.
-
getParameterInfo
Get the available information on method parameters.- Returns:
- The
MethodParameterInfoobjects for the method parameters, one per parameter.
-
hasParameterAnnotation
Check if this method has a parameter with the annotation.- Parameters:
annotation- The method parameter annotation.- Returns:
- true if this method has a parameter with the annotation.
-
hasParameterAnnotation
Check if this method has a parameter with the named annotation.- Parameters:
annotationName- The name of a method parameter annotation.- Returns:
- true if this method has a parameter with the named annotation.
-
loadParameterClasses
-
loadClassAndGetMethod
Load the class this method is associated with, and get theMethodreference for this method. Only call this ifisConstructor()returns false, otherwise anIllegalArgumentExceptionwill be thrown. Instead callloadClassAndGetConstructor()for constructors.- Returns:
- The
Methodreference for this method. - Throws:
IllegalArgumentException-- If the method's class can't be loaded
- If the method does not exist
- If the method is a constructor
- If one of the method's parameters references an unknown class
- If the method's return type references an unknown class
-
loadClassAndGetConstructor
Load the class this constructor is associated with, and get theConstructorreference for this constructor. Only call this ifisConstructor()returns true, otherwise anIllegalArgumentExceptionwill be thrown. Instead callloadClassAndGetMethod()for non-method constructors.- Returns:
- The
Constructorreference for this constructor. - Throws:
IllegalArgumentException-- If the method's class can't be loaded
- If the constructor does not exist
- If the method is not a constructor
- If one of the constructor's parameters references an unknown class
-
handleRepeatableAnnotations
HandleRepeatableannotations.- Parameters:
allRepeatableAnnotationNames- the names of all repeatable annotations
-
setScanResult
Description copied from class:ScanResultObjectSet ScanResult backreferences in info objects after scan has completed.- Overrides:
setScanResultin classScanResultObject- Parameters:
scanResult- the scan result
-
findReferencedClassInfo
protected void findReferencedClassInfo(Map<String, ClassInfo> classNameToClassInfo, Set<ClassInfo> refdClassInfo, LogNode log) GetClassInfoobjects for any classes referenced in the type descriptor or type signature.- Overrides:
findReferencedClassInfoin classScanResultObject- Parameters:
classNameToClassInfo- the map from class name toClassInfo.refdClassInfo- the referenced class infolog- the log
-
equals
-
hashCode
-
compareTo
Sort in order of class name, method name, then type descriptor.- Specified by:
compareToin interfaceComparable<MethodInfo>- Parameters:
other- the otherMethodInfoto compare.- Returns:
- the result of the comparison.
-
toString
Get a string representation of the method. Note that constructors are named"<init>", and private static class initializer blocks are named"<clinit>".- Specified by:
toStringin classScanResultObject- Parameters:
useSimpleNames- the use simple namesbuf- the buf
-