public class MethodSignature extends Signature
In order to avoid a huge blow-up in memory consumption for analyses that
rely heavily on method signatures, e.g. the creation of a call graph,
this class provides the ability to cache signatures belonging to concrete
Method objects. By using the corresponding computeIfAbsent(Clazz, Method)
method, the amount of strings that need to be retained during runtime is
reduced.
| Modifier and Type | Field and Description |
|---|---|
MethodDescriptor |
descriptor |
java.lang.String |
method |
className, fqn, packageName, prettyFqn| Constructor and Description |
|---|
MethodSignature(Clazz clazz,
Method method) |
MethodSignature(java.lang.String clazz,
java.lang.String method,
MethodDescriptor descriptor) |
MethodSignature(java.lang.String clazz,
java.lang.String method,
java.lang.String descriptor) |
| Modifier and Type | Method and Description |
|---|---|
protected java.lang.String |
calculateFqn() |
protected java.lang.String |
calculatePrettyFqn() |
static void |
clearCache()
Remove all currently cached
MethodSignature objects from the cache,
allowing them to be removed by the garbage collector. |
static MethodSignature |
computeIfAbsent(Clazz clazz,
Method method)
Get the singleton
MethodSignature object for this specific Method. |
boolean |
equals(java.lang.Object o) |
int |
hashCode() |
boolean |
matchesIgnoreNull(MethodSignature other)
Fuzzy check if two
MethodSignature objects are equal. |
boolean |
matchesIgnoreNullAndDollar(MethodSignature other)
Fuzzy check like
matchesIgnoreNull(MethodSignature) but allows
dollar signs in type strings. |
compareTo, computeIfAbsent, getClassName, getFqn, getPackageName, getPrettyFqn, of, setCacheEnabled, toStringpublic final java.lang.String method
public final MethodDescriptor descriptor
public MethodSignature(java.lang.String clazz,
java.lang.String method,
MethodDescriptor descriptor)
public MethodSignature(java.lang.String clazz,
java.lang.String method,
java.lang.String descriptor)
public static MethodSignature computeIfAbsent(Clazz clazz, Method method)
MethodSignature object for this specific Method.
If it is not yet available in the cache, it will be newly instantiated.clazz - The class containing the target methodmethod - The method whose signature is to be generatedMethodSignature objectprotected java.lang.String calculateFqn()
calculateFqn in class Signatureprotected java.lang.String calculatePrettyFqn()
calculatePrettyFqn in class Signaturepublic static void clearCache()
MethodSignature objects from the cache,
allowing them to be removed by the garbage collector.public boolean matchesIgnoreNull(MethodSignature other)
MethodSignature objects are equal. If any
field is null, its value in the other object does not influence
the check result, providing a way to create a wildcard MethodSignature
that e.g. matches several methods of a class that have the same name
but a different MethodDescriptor.other - The MethodSignature to compare with this onepublic boolean matchesIgnoreNullAndDollar(MethodSignature other)
matchesIgnoreNull(MethodSignature) but allows
dollar signs in type strings. Usually the notation for inner classes
is com/example/Foo$Bar, but sometimes external systems call
this class com/example/Foo/Bar. These two names correspond to
the same class and thus should be treated as the same if they appear
in a MethodSignature. If it is to be expected that this situation
may occur, this method should be preferred over
matchesIgnoreNull(MethodSignature) to avoid false negatives.other - The MethodSignature to compare with this one