Class ClassInfoList
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractList<E>
-
- java.util.ArrayList<ClassInfo>
-
- io.github.classgraph.ClassInfoList
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Iterable<ClassInfo>
,Collection<ClassInfo>
,List<ClassInfo>
,RandomAccess
public class ClassInfoList extends ArrayList<ClassInfo>
A list ofClassInfo
objects, which stores both reachable classes (obtained through a given class relationship, either by direct relationship or through an indirect path), and directly related classes (classes reachable through a direct relationship only).By default, this list returns reachable classes. By calling
directOnly()
, you can get the directly related classes.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
ClassInfoList.ClassInfoFilter
Filter aClassInfoList
using a predicate mapping aClassInfo
object to a boolean, producing anotherClassInfoList
for all items in the list for which the predicate is true.
-
Field Summary
-
Fields inherited from class java.util.AbstractList
modCount
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
containsName(String className)
ClassInfoList
directOnly()
Get the list of classes that were directly related, as opposed to reachable through multiple steps.ClassInfoList
exclude(ClassInfoList other)
Find the set difference between thisClassInfoList
and anotherClassInfoList
, i.e.ClassInfoList
filter(ClassInfoList.ClassInfoFilter filter)
Find the subset of thisClassInfoList
for which the given filter predicate is true.String
generateGraphVizDotFile()
Generate a .dot file which can be fed into GraphViz for layout and visualization of the class graph.String
generateGraphVizDotFile(float sizeX, float sizeY)
Generate a .dot file which can be fed into GraphViz for layout and visualization of the class graph.String
generateGraphVizDotFile(float sizeX, float sizeY, boolean showFields, boolean showFieldTypeDependencyEdges, boolean showMethods, boolean showMethodTypeDependencyEdges, boolean showAnnotations)
Generate a .dot file which can be fed into GraphViz for layout and visualization of the class graph.void
generateGraphVizDotFile(File file)
Generate a and save a .dot file, which can be fed into GraphViz for layout and visualization of the class graph.ClassInfo
get(String className)
ClassInfoList
getAnnotations()
Filter thisClassInfoList
to include only annotations.List<String>
getAsStrings()
ClassInfoList
getEnums()
Filter thisClassInfoList
to include onlyEnum
classes.ClassInfoList
getImplementedInterfaces()
Filter thisClassInfoList
to include only implemented interfaces, i.e.ClassInfoList
getInterfaces()
Filter thisClassInfoList
to include only interfaces that are not annotations.ClassInfoList
getInterfacesAndAnnotations()
Filter thisClassInfoList
to include only interfaces and annotations (annotations are interfaces, and can be implemented).List<String>
getNames()
ClassInfoList
getStandardClasses()
Filter thisClassInfoList
to include only standard classes (classes that are not interfaces or annotations).ClassInfoList
intersect(ClassInfoList... others)
Find the intersection of thisClassInfoList
with one or more others.List<Class<?>>
loadClasses()
Convert this list ofClassInfo
objects to a list ofClass<?>
objects.List<Class<?>>
loadClasses(boolean ignoreExceptions)
Convert this list ofClassInfo
objects to a list ofClass<?>
objects.<T> List<Class<T>>
loadClasses(Class<T> superclassOrInterfaceType)
Convert this list ofClassInfo
objects to a list ofClass<?>
objects, casting each item in the list to the requested superclass or interface type.<T> List<Class<T>>
loadClasses(Class<T> superclassOrInterfaceType, boolean ignoreExceptions)
Convert this list ofClassInfo
objects to a list ofClass<?>
objects, casting each item in the list to the requested superclass or interface type.String
toString()
ClassInfoList
union(ClassInfoList... others)
Find the union of thisClassInfoList
with one or more others.-
Methods inherited from class java.util.ArrayList
add, add, addAll, addAll, clear, clone, contains, ensureCapacity, equals, forEach, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeIf, removeRange, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray, trimToSize
-
Methods inherited from class java.util.AbstractCollection
containsAll
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Collection
parallelStream, stream, toArray
-
Methods inherited from interface java.util.List
containsAll
-
-
-
-
Method Detail
-
loadClasses
public <T> List<Class<T>> loadClasses(Class<T> superclassOrInterfaceType, boolean ignoreExceptions)
Convert this list ofClassInfo
objects to a list ofClass<?>
objects, casting each item in the list to the requested superclass or interface type. Causes the classloader to load the class named by eachClassInfo
object, if it is not already loaded.Important note: since
superclassOrInterfaceType
is a class reference for an already-loaded class, it is critical thatsuperclassOrInterfaceType
is loaded by the same classloader as the class referred to by thisClassInfo
object, otherwise the class cast will fail.- Type Parameters:
T
- The superclass or interface.- Parameters:
superclassOrInterfaceType
- The superclass or interface class reference to cast each loaded class to.ignoreExceptions
- If true, ignore any exceptions or errors thrown during classloading, or when attempting to cast the resultingClass<?>
reference to the requested type -- instead, skip the element (i.e. the returned list may contain fewer items than this input list). If false,IllegalArgumentException
is thrown if the class could not be loaded or could not be cast to the requested type.- Returns:
- The loaded
Class<?>
objects corresponding to eachClassInfo
object in this list. - Throws:
IllegalArgumentException
- if ignoreExceptions is false and an exception or error was thrown while trying to load or cast any of the classes.
-
loadClasses
public <T> List<Class<T>> loadClasses(Class<T> superclassOrInterfaceType)
Convert this list ofClassInfo
objects to a list ofClass<?>
objects, casting each item in the list to the requested superclass or interface type. Causes the classloader to load the class named by eachClassInfo
object, if it is not already loaded.Important note: since
superclassOrInterfaceType
is a class reference for an already-loaded class, it is critical thatsuperclassOrInterfaceType
is loaded by the same classloader as the class referred to by thisClassInfo
object, otherwise the class cast will fail.- Type Parameters:
T
- The superclass or interface.- Parameters:
superclassOrInterfaceType
- The superclass or interface class reference to cast each loaded class to.- Returns:
- The loaded
Class<?>
objects corresponding to eachClassInfo
object in this list. - Throws:
IllegalArgumentException
- if an exception or error was thrown while trying to load or cast any of the classes.
-
loadClasses
public List<Class<?>> loadClasses(boolean ignoreExceptions)
Convert this list ofClassInfo
objects to a list ofClass<?>
objects. Causes the classloader to load the class named by eachClassInfo
object, if it is not already loaded.- Parameters:
ignoreExceptions
- If true, ignore any exceptions or errors thrown during classloading. If an exception or error is thrown during classloading, noClass<?>
reference is added to the output class for the correspondingClassInfo
object, so the returned list may contain fewer items than this input list. If false,IllegalArgumentException
is thrown if the class could not be loaded.- Returns:
- The loaded
Class<?>
objects corresponding to eachClassInfo
object in this list. - Throws:
IllegalArgumentException
- if ignoreExceptions is false and an exception or error was thrown while trying to load any of the classes.
-
loadClasses
public List<Class<?>> loadClasses()
Convert this list ofClassInfo
objects to a list ofClass<?>
objects. Causes the classloader to load the class named by eachClassInfo
object, if it is not already loaded.- Returns:
- The loaded
Class<?>
objects corresponding to eachClassInfo
object in this list. - Throws:
IllegalArgumentException
- if an exception or error was thrown while trying to load any of the classes.
-
getNames
public List<String> getNames()
- Returns:
- The names of all classes in this list, by calling
ClassInfo.getName()
for each item in the list.
-
getAsStrings
public List<String> getAsStrings()
- Returns:
- The string representations of all classes in this list (with annotations, modifiers, etc.), by
calling
ClassInfo.toString()
for each item in the list.
-
containsName
public boolean containsName(String className)
- Parameters:
className
- The name of a class.- Returns:
- true if the list contains a class with the given name.
-
get
public ClassInfo get(String className)
- Parameters:
className
- The fully-qualified name of a class.- Returns:
- The
ClassInfo
object in the list with the given name, or null if not found.
-
directOnly
public ClassInfoList directOnly()
Get the list of classes that were directly related, as opposed to reachable through multiple steps. For example, if thisClassInfoList
was produced by querying for all superclasses of a given class, thendirectOnly()
will return only the direct superclass of this class.- Returns:
- The list of directly-related classes.
-
union
public ClassInfoList union(ClassInfoList... others)
Find the union of thisClassInfoList
with one or more others.- Parameters:
others
- The otherClassInfoList
s to union with this one.- Returns:
- The union of this
ClassInfoList
with the others.
-
intersect
public ClassInfoList intersect(ClassInfoList... others)
Find the intersection of thisClassInfoList
with one or more others.- Parameters:
others
- The otherClassInfoList
s to intersect with this one.- Returns:
- The intersection of this
ClassInfoList
with the others.
-
exclude
public ClassInfoList exclude(ClassInfoList other)
Find the set difference between thisClassInfoList
and anotherClassInfoList
, i.e. (this \ other).- Parameters:
other
- The otherClassInfoList
to subtract from this one.- Returns:
- The set difference of this
ClassInfoList
and other, i.e. (this \ other).
-
filter
public ClassInfoList filter(ClassInfoList.ClassInfoFilter filter)
Find the subset of thisClassInfoList
for which the given filter predicate is true.- Parameters:
filter
- TheClassInfoList.ClassInfoFilter
to apply.- Returns:
- The subset of this
ClassInfoList
for which the given filter predicate is true.
-
getStandardClasses
public ClassInfoList getStandardClasses()
Filter thisClassInfoList
to include only standard classes (classes that are not interfaces or annotations).- Returns:
- The filtered list, containing only standard classes.
-
getInterfaces
public ClassInfoList getInterfaces()
Filter thisClassInfoList
to include only interfaces that are not annotations. See alsogetInterfacesAndAnnotations()
.- Returns:
- The filtered list, containing only interfaces.
-
getInterfacesAndAnnotations
public ClassInfoList getInterfacesAndAnnotations()
Filter thisClassInfoList
to include only interfaces and annotations (annotations are interfaces, and can be implemented). See alsogetInterfaces()
.- Returns:
- The filtered list, containing only interfaces.
-
getImplementedInterfaces
public ClassInfoList getImplementedInterfaces()
Filter thisClassInfoList
to include only implemented interfaces, i.e. non-annotation interfaces, or annotations that have been implemented by a class.- Returns:
- The filtered list, containing only implemented interfaces.
-
getAnnotations
public ClassInfoList getAnnotations()
Filter thisClassInfoList
to include only annotations.- Returns:
- The filtered list, containing only annotations.
-
getEnums
public ClassInfoList getEnums()
Filter thisClassInfoList
to include onlyEnum
classes.- Returns:
- The filtered list, containing only enums.
-
generateGraphVizDotFile
public String generateGraphVizDotFile(float sizeX, float sizeY, boolean showFields, boolean showFieldTypeDependencyEdges, boolean showMethods, boolean showMethodTypeDependencyEdges, boolean showAnnotations)
Generate a .dot file which can be fed into GraphViz for layout and visualization of the class graph. The sizeX and sizeY parameters are the image output size to use (in inches) when GraphViz is asked to render the .dot file.To show non-public classes, call
ClassGraph.ignoreClassVisibility()
before scanning.To show fields, call
ClassGraph.enableFieldInfo()
before scanning. To show non-public fields, also callClassGraph.ignoreFieldVisibility()
before scanning.To show methods, call
ClassGraph.enableMethodInfo()
before scanning. To show non-public methods, also callClassGraph.ignoreMethodVisibility()
before scanning.To show annotations, call
ClassGraph.enableAnnotationInfo()
before scanning. To show non-public annotations, also callClassGraph.ignoreFieldVisibility()
before scanning (there is no separate visibility modifier for annotations).- Parameters:
sizeX
- The GraphViz layout width in inches.sizeY
- The GraphViz layout width in inches.showFields
- If true, show fields within class nodes in the graph.showFieldTypeDependencyEdges
- If true, show edges between classes and the types of their fields.showMethods
- If true, show methods within class nodes in the graph.showMethodTypeDependencyEdges
- If true, show edges between classes and the return types and/or parameter types of their methods.showAnnotations
- If true, show annotations in the graph.- Returns:
- the GraphViz file contents.
- Throws:
IllegalArgumentException
- if thisClassInfoList
is empty orClassGraph.enableClassInfo()
was not called before scanning (since there would be nothing to graph).
-
generateGraphVizDotFile
public String generateGraphVizDotFile(float sizeX, float sizeY)
Generate a .dot file which can be fed into GraphViz for layout and visualization of the class graph.Methods, fields and annotations are shown if enabled, via
ClassGraph.enableMethodInfo()
,ClassGraph.enableFieldInfo()
andClassGraph.enableAnnotationInfo()
.Only public classes, methods, and fields are shown, unless
ClassGraph.ignoreClassVisibility()
,ClassGraph.ignoreMethodVisibility()
, and/orClassGraph.ignoreFieldVisibility()
has/have been called.- Parameters:
sizeX
- The GraphViz layout width in inches.sizeY
- The GraphViz layout width in inches.- Returns:
- the GraphViz file contents.
- Throws:
IllegalArgumentException
- if thisClassInfoList
is empty orClassGraph.enableClassInfo()
was not called before scanning (since there would be nothing to graph).
-
generateGraphVizDotFile
public String generateGraphVizDotFile()
Generate a .dot file which can be fed into GraphViz for layout and visualization of the class graph.Methods, fields and annotations are shown if enabled, via
ClassGraph.enableMethodInfo()
,ClassGraph.enableFieldInfo()
andClassGraph.enableAnnotationInfo()
.Only public classes, methods, and fields are shown, unless
ClassGraph.ignoreClassVisibility()
,ClassGraph.ignoreMethodVisibility()
, and/orClassGraph.ignoreFieldVisibility()
has/have been called.- Returns:
- the GraphViz file contents.
- Throws:
IllegalArgumentException
- if thisClassInfoList
is empty orClassGraph.enableClassInfo()
was not called before scanning (since there would be nothing to graph).
-
generateGraphVizDotFile
public void generateGraphVizDotFile(File file) throws IOException
Generate a and save a .dot file, which can be fed into GraphViz for layout and visualization of the class graph.Methods, fields and annotations are shown if enabled, via
ClassGraph.enableMethodInfo()
,ClassGraph.enableFieldInfo()
andClassGraph.enableAnnotationInfo()
.Only public classes, methods, and fields are shown, unless
ClassGraph.ignoreClassVisibility()
,ClassGraph.ignoreMethodVisibility()
, and/orClassGraph.ignoreFieldVisibility()
has/have been called.- Parameters:
file
- the file to save the GraphViz .dot file to.- Throws:
IllegalArgumentException
- if thisClassInfoList
is empty orClassGraph.enableClassInfo()
was not called before scanning (since there would be nothing to graph).IOException
- if the file could not be saved.
-
toString
public String toString()
- Overrides:
toString
in classAbstractCollection<ClassInfo>
-
-