Class OpenClassScanner
java.lang.Object
cloud.opencode.base.classloader.OpenClassScanner
OpenClassScanner - Class Scanning Facade
OpenClassScanner - 类扫描门面
Unified entry point for class scanning operations.
类扫描操作的统一入口。
Features | 主要功能:
- Quick annotation scanning - 快速注解扫描
- Subtype scanning - 子类型扫描
- Implementation scanning - 实现类扫描
- Create scanners - 创建扫描器
Usage Examples | 使用示例:
// Quick scan with annotation
Set<Class<?>> services = OpenClassScanner.scanWithAnnotation("com.example", Service.class);
// Scan subtypes
Set<Class<? extends Plugin>> plugins = OpenClassScanner.scanSubTypes("com.example", Plugin.class);
// Use scanner with configuration
Set<Class<?>> classes = OpenClassScanner.of("com.example")
.includeInnerClasses(true)
.parallel(true)
.scan(ScanFilter.isConcrete());
Security | 安全性:
- Thread-safe: Yes - 线程安全: 是
- Null-safe: Yes - 空值安全: 是
- Since:
- JDK 25, opencode-base-classloader V1.0.0
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionstatic AnnotationScannerannotationScanner(String basePackage) Create annotation scanner 创建注解扫描器static ClassScannerof(ClassLoader classLoader, String basePackage) Create class scanner with classloader 使用类加载器创建类扫描器static ClassScannerCreate class scanner for single package 为单个包创建类扫描器static ClassScannerCreate class scanner for multiple packages 为多个包创建类扫描器static PackageScannerpackageScanner(String basePackage) Create package scanner 创建包扫描器scanClassNames(String basePackage) Scan class names using build-time index (falls back to runtime scanning) 使用构建时索引扫描类名(降级为运行时扫描)scanImplementations(String basePackage, Class<T> interfaceType) Quick scan for interface implementations 快速扫描接口实现scanSubTypes(String basePackage, Class<T> superType) Quick scan for subtypes 快速扫描子类型scanWithAnnotation(String basePackage, Class<? extends Annotation> annotation) Quick scan for classes with annotation 快速扫描带注解的类
-
Method Details
-
of
Create class scanner for single package 为单个包创建类扫描器- Parameters:
basePackage- base package | 基础包- Returns:
- class scanner | 类扫描器
-
of
Create class scanner for multiple packages 为多个包创建类扫描器- Parameters:
basePackages- base packages | 基础包数组- Returns:
- class scanner | 类扫描器
-
of
Create class scanner with classloader 使用类加载器创建类扫描器- Parameters:
classLoader- class loader | 类加载器basePackage- base package | 基础包- Returns:
- class scanner | 类扫描器
-
scanWithAnnotation
public static Set<Class<?>> scanWithAnnotation(String basePackage, Class<? extends Annotation> annotation) Quick scan for classes with annotation 快速扫描带注解的类- Parameters:
basePackage- base package | 基础包annotation- annotation class | 注解类- Returns:
- set of annotated classes | 带注解的类集合
-
scanSubTypes
-
scanImplementations
public static <T> Set<Class<? extends T>> scanImplementations(String basePackage, Class<T> interfaceType) Quick scan for interface implementations 快速扫描接口实现- Type Parameters:
T- type parameter | 类型参数- Parameters:
basePackage- base package | 基础包interfaceType- interface type | 接口类型- Returns:
- set of implementations | 实现类集合
-
annotationScanner
Create annotation scanner 创建注解扫描器- Parameters:
basePackage- base package | 基础包- Returns:
- annotation scanner | 注解扫描器
-
packageScanner
Create package scanner 创建包扫描器- Parameters:
basePackage- base package | 基础包- Returns:
- package scanner | 包扫描器
-
scanClassNames
Scan class names using build-time index (falls back to runtime scanning) 使用构建时索引扫描类名(降级为运行时扫描)If a valid
META-INF/opencode/class-index.jsonexists on the classpath, returns class names from the index without filesystem I/O. Otherwise falls back to runtime classpath scanning.如果 classpath 上存在有效的
META-INF/opencode/class-index.json, 则直接从索引返回类名,无需文件系统 I/O。否则降级为运行时扫描。- Parameters:
basePackage- base package to scan | 要扫描的基础包- Returns:
- set of fully-qualified class names | 全限定类名集合
-