Package io.microsphere.io.scanner
Class SimpleClassScanner
- java.lang.Object
-
- io.microsphere.io.scanner.SimpleClassScanner
-
public class SimpleClassScanner extends java.lang.Object
A simple scanner for scanningClass
objects under a specified package or archive.This class provides various methods to scan and retrieve classes either by package name, resource URL, or archive file. It supports filtering based on classloader, package recursion, and custom predicates.
Example Usage
Scan all classes in a package without loading them:
SimpleClassScanner scanner = new SimpleClassScanner(); Set<Class<?>> classes = scanner.scan(classLoader, "com.example.package");
Scan and load all classes recursively in a package:
Set<Class<?>> loadedClasses = scanner.scan(classLoader, "com.example.package", true, true);
Scan classes from an archive file with filters:
File archiveFile = new File("path/to/archive.jar"); Predicate<Class<?>> myFilter = cls -> cls.isAnnotationPresent(MyAnnotation.class); Set<Class<?>> filteredClasses = scanner.scan(classLoader, archiveFile, false, myFilter);
- Since:
- 1.0.0
- Author:
- Mercy
- See Also:
SimpleClassScanner
-
-
Field Summary
Fields Modifier and Type Field Description static SimpleClassScanner
INSTANCE
Singleton
-
Constructor Summary
Constructors Constructor Description SimpleClassScanner()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Set<java.lang.Class<?>>
scan(java.lang.ClassLoader classLoader, java.io.File archiveFile, boolean requiredLoad, java.util.function.Predicate<? super java.lang.Class<?>>... classFilters)
java.util.Set<java.lang.Class<?>>
scan(java.lang.ClassLoader classLoader, java.lang.String packageName)
It's equal to invokescan(ClassLoader, String, boolean, boolean)
method withrequiredLoad=false
andrecursive=false
java.util.Set<java.lang.Class<?>>
scan(java.lang.ClassLoader classLoader, java.lang.String packageName, boolean recursive)
It's equal to invokescan(ClassLoader, String, boolean, boolean)
method withrequiredLoad=false
java.util.Set<java.lang.Class<?>>
scan(java.lang.ClassLoader classLoader, java.lang.String packageName, boolean recursive, boolean requiredLoad)
scanClass
set under specified package name or its' sub-packages inClassLoader
, ifrequiredLoad
indicatestrue
, try to load those classes.java.util.Set<java.lang.Class<?>>
scan(java.lang.ClassLoader classLoader, java.net.URL resourceInArchive, boolean requiredLoad, java.util.function.Predicate<? super java.lang.Class<?>>... classFilters)
-
-
-
Field Detail
-
INSTANCE
public static final SimpleClassScanner INSTANCE
Singleton
-
-
Method Detail
-
scan
public java.util.Set<java.lang.Class<?>> scan(java.lang.ClassLoader classLoader, java.lang.String packageName) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
It's equal to invokescan(ClassLoader, String, boolean, boolean)
method withrequiredLoad=false
andrecursive=false
- Parameters:
classLoader
-ClassLoader
packageName
- the name of package- Returns:
scan(ClassLoader, String, boolean, boolean)
method withrequiredLoad=false
- Throws:
java.lang.IllegalArgumentException
- scanned source is not legaljava.lang.IllegalStateException
- scanned source's state is not valid
-
scan
public java.util.Set<java.lang.Class<?>> scan(java.lang.ClassLoader classLoader, java.lang.String packageName, boolean recursive) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
It's equal to invokescan(ClassLoader, String, boolean, boolean)
method withrequiredLoad=false
- Parameters:
classLoader
-ClassLoader
packageName
- the name of packagerecursive
- included sub-package- Returns:
scan(ClassLoader, String, boolean, boolean)
method withrequiredLoad=false
- Throws:
java.lang.IllegalArgumentException
- scanned source is not legaljava.lang.IllegalStateException
- scanned source's state is not valid
-
scan
public java.util.Set<java.lang.Class<?>> scan(java.lang.ClassLoader classLoader, java.lang.String packageName, boolean recursive, boolean requiredLoad) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
scanClass
set under specified package name or its' sub-packages inClassLoader
, ifrequiredLoad
indicatestrue
, try to load those classes.- Parameters:
classLoader
-ClassLoader
packageName
- the name of packagerecursive
- included sub-packagerequiredLoad
- try to load those classes or not- Returns:
- Throws:
java.lang.IllegalArgumentException
java.lang.IllegalStateException
-
scan
public java.util.Set<java.lang.Class<?>> scan(java.lang.ClassLoader classLoader, java.net.URL resourceInArchive, boolean requiredLoad, java.util.function.Predicate<? super java.lang.Class<?>>... classFilters)
-
scan
public java.util.Set<java.lang.Class<?>> scan(java.lang.ClassLoader classLoader, java.io.File archiveFile, boolean requiredLoad, java.util.function.Predicate<? super java.lang.Class<?>>... classFilters)
-
-