Class OpenClassScanner

java.lang.Object
cloud.opencode.base.classloader.OpenClassScanner

public final class OpenClassScanner extends Object
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 Details

    • of

      public static ClassScanner of(String basePackage)
      Create class scanner for single package 为单个包创建类扫描器
      Parameters:
      basePackage - base package | 基础包
      Returns:
      class scanner | 类扫描器
    • of

      public static ClassScanner of(String... basePackages)
      Create class scanner for multiple packages 为多个包创建类扫描器
      Parameters:
      basePackages - base packages | 基础包数组
      Returns:
      class scanner | 类扫描器
    • of

      public static ClassScanner of(ClassLoader classLoader, String basePackage)
      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

      public static <T> Set<Class<? extends T>> scanSubTypes(String basePackage, Class<T> superType)
      Quick scan for subtypes 快速扫描子类型
      Type Parameters:
      T - type parameter | 类型参数
      Parameters:
      basePackage - base package | 基础包
      superType - super type | 父类型
      Returns:
      set of subtypes | 子类型集合
    • 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

      public static AnnotationScanner annotationScanner(String basePackage)
      Create annotation scanner 创建注解扫描器
      Parameters:
      basePackage - base package | 基础包
      Returns:
      annotation scanner | 注解扫描器
    • packageScanner

      public static PackageScanner packageScanner(String basePackage)
      Create package scanner 创建包扫描器
      Parameters:
      basePackage - base package | 基础包
      Returns:
      package scanner | 包扫描器
    • scanClassNames

      public static Set<String> scanClassNames(String basePackage)
      Scan class names using build-time index (falls back to runtime scanning) 使用构建时索引扫描类名(降级为运行时扫描)

      If a valid META-INF/opencode/class-index.json exists 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 | 全限定类名集合