Class ClassScanner

java.lang.Object
cloud.opencode.base.classloader.scanner.ClassScanner

public class ClassScanner extends Object
Class Scanner - Scans classes in specified packages 类扫描器 - 扫描指定包下的类

Scans and finds classes matching specified criteria.

扫描并查找匹配指定条件的类。

Features | 主要功能:

  • Package scanning - 包扫描
  • Annotation scanning - 注解扫描
  • Subtype scanning - 子类型扫描
  • Custom filter support - 自定义过滤器支持

Usage Examples | 使用示例:

ClassScanner scanner = ClassScanner.of("com.example");
Set<Class<?>> services = scanner.scanWithAnnotation(Service.class);
Set<Class<?>> all = scanner.scan();

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 scanner for single package 为单个包创建扫描器
      Parameters:
      basePackage - base package | 基础包
      Returns:
      scanner | 扫描器
    • of

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

      public static ClassScanner of(ClassLoader classLoader, String basePackage)
      Create scanner with classloader 使用类加载器创建扫描器
      Parameters:
      classLoader - class loader | 类加载器
      basePackage - base package | 基础包
      Returns:
      scanner | 扫描器
    • includeJars

      public ClassScanner includeJars(boolean include)
      Set whether to include JAR files 设置是否包含 JAR 文件
      Parameters:
      include - include JARs | 包含 JAR
      Returns:
      this scanner | 此扫描器
    • includeInnerClasses

      public ClassScanner includeInnerClasses(boolean include)
      Set whether to include inner classes 设置是否包含内部类
      Parameters:
      include - include inner classes | 包含内部类
      Returns:
      this scanner | 此扫描器
    • parallel

      public ClassScanner parallel(boolean parallel)
      Set parallel scanning 设置并行扫描
      Parameters:
      parallel - enable parallel | 启用并行
      Returns:
      this scanner | 此扫描器
    • excludePackage

      public ClassScanner excludePackage(String packageName)
      Add excluded package 添加排除包
      Parameters:
      packageName - package name | 包名
      Returns:
      this scanner | 此扫描器
    • classLoader

      public ClassScanner classLoader(ClassLoader classLoader)
      Set class loader 设置类加载器
      Parameters:
      classLoader - class loader | 类加载器
      Returns:
      this scanner | 此扫描器
    • scan

      public Set<Class<?>> scan()
      Scan all classes 扫描所有类
      Returns:
      set of classes | 类集合
    • scan

      public Set<Class<?>> scan(ScanFilter filter)
      Scan with filter 使用过滤器扫描
      Parameters:
      filter - scan filter | 扫描过滤器
      Returns:
      set of matching classes | 匹配的类集合
    • scanWithAnnotation

      public Set<Class<?>> scanWithAnnotation(Class<? extends Annotation> annotation)
      Scan for classes with annotation 扫描带注解的类
      Parameters:
      annotation - annotation class | 注解类
      Returns:
      set of annotated classes | 带注解的类集合
    • scanSubTypes

      public <T> Set<Class<? extends T>> scanSubTypes(Class<T> superType)
      Scan for subtypes 扫描子类型
      Type Parameters:
      T - type parameter | 类型参数
      Parameters:
      superType - super type | 父类型
      Returns:
      set of subtypes | 子类型集合
    • scanImplementations

      public <T> Set<Class<? extends T>> scanImplementations(Class<T> interfaceType)
      Scan for interface implementations 扫描接口实现
      Type Parameters:
      T - type parameter | 类型参数
      Parameters:
      interfaceType - interface type | 接口类型
      Returns:
      set of implementations | 实现类集合
    • stream

      public Stream<Class<?>> stream()
      Return class stream (lazy loading) 返回类流(懒加载)
      Returns:
      stream of classes | 类流
    • classNameStream

      public Stream<String> classNameStream()
      Return class name stream (without loading) 返回类名流(不加载类)
      Returns:
      stream of class names | 类名流