Package io.microsphere.io.scanner
Class SimpleClassScanner
- java.lang.Object
-
- io.microsphere.io.scanner.SimpleClassScanner
-
public class SimpleClassScanner extends java.lang.ObjectA simple scanner for scanningClassobjects 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 SimpleClassScannerINSTANCESingleton
-
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=falseandrecursive=falsejava.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=falsejava.util.Set<java.lang.Class<?>>scan(java.lang.ClassLoader classLoader, java.lang.String packageName, boolean recursive, boolean requiredLoad)scanClassset under specified package name or its' sub-packages inClassLoader, ifrequiredLoadindicatestrue, 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
@Nonnull @Immutable public java.util.Set<java.lang.Class<?>> scan(java.lang.ClassLoader classLoader, java.lang.String packageName) throws java.lang.IllegalArgumentException, java.lang.IllegalStateExceptionIt's equal to invokescan(ClassLoader, String, boolean, boolean)method withrequiredLoad=falseandrecursive=false- Parameters:
classLoader-ClassLoaderpackageName- 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
@Nonnull @Immutable public java.util.Set<java.lang.Class<?>> scan(java.lang.ClassLoader classLoader, java.lang.String packageName, boolean recursive) throws java.lang.IllegalArgumentException, java.lang.IllegalStateExceptionIt's equal to invokescan(ClassLoader, String, boolean, boolean)method withrequiredLoad=false- Parameters:
classLoader-ClassLoaderpackageName- 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
@Nonnull @Immutable 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.IllegalStateExceptionscanClassset under specified package name or its' sub-packages inClassLoader, ifrequiredLoadindicatestrue, try to load those classes.- Parameters:
classLoader-ClassLoaderpackageName- the name of packagerecursive- included sub-packagerequiredLoad- try to load those classes or not- Returns:
- Throws:
java.lang.IllegalArgumentExceptionjava.lang.IllegalStateException
-
scan
@Nonnull 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
@Nonnull 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)
-
-