Interface ScanFilter

Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface ScanFilter
Scan Filter - Filter interface for class scanning 扫描过滤器 - 类扫描的过滤器接口

Functional interface for filtering classes during scanning.

用于在扫描期间过滤类的函数式接口。

Features | 主要功能:

  • Predefined filters - 预定义过滤器
  • Combinable with and/or/not - 可使用 and/or/not 组合
  • Custom filter support - 自定义过滤器支持

Usage Examples | 使用示例:

ScanFilter filter = ScanFilter.and(
    ScanFilter.isConcrete(),
    ScanFilter.hasAnnotation(Service.class),
    ScanFilter.not(ScanFilter.nameEndsWith("Test"))
);
Set<Class<?>> classes = scanner.scan(filter);

Security | 安全性:

  • Thread-safe: Yes (stateless) - 线程安全: 是 (无状态)
  • Null-safe: Yes - 空值安全: 是
Since:
JDK 25, opencode-base-classloader V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • test

      boolean test(Class<?> clazz)
      Test if class matches filter 测试类是否匹配过滤器
      Parameters:
      clazz - class to test | 要测试的类
      Returns:
      true if matches | 匹配返回 true
    • and

      default ScanFilter and(ScanFilter other)
      AND combination AND 组合
      Parameters:
      other - other filter | 其他过滤器
      Returns:
      combined filter | 组合后的过滤器
    • or

      default ScanFilter or(ScanFilter other)
      OR combination OR 组合
      Parameters:
      other - other filter | 其他过滤器
      Returns:
      combined filter | 组合后的过滤器
    • negate

      default ScanFilter negate()
      Negate filter 取反过滤器
      Returns:
      negated filter | 取反后的过滤器
    • and

      static ScanFilter and(ScanFilter... filters)
      AND combination of multiple filters 多个过滤器的 AND 组合
      Parameters:
      filters - filters to combine | 要组合的过滤器
      Returns:
      combined filter | 组合后的过滤器
    • or

      static ScanFilter or(ScanFilter... filters)
      OR combination of multiple filters 多个过滤器的 OR 组合
      Parameters:
      filters - filters to combine | 要组合的过滤器
      Returns:
      combined filter | 组合后的过滤器
    • not

      static ScanFilter not(ScanFilter filter)
      Negate a filter 对过滤器取反
      Parameters:
      filter - filter to negate | 要取反的过滤器
      Returns:
      negated filter | 取反后的过滤器
    • isConcrete

      static ScanFilter isConcrete()
      Filter for concrete classes (not abstract, not interface) 过滤具体类(非抽象、非接口)
      Returns:
      filter | 过滤器
    • isInterface

      static ScanFilter isInterface()
      Filter for interfaces 过滤接口
      Returns:
      filter | 过滤器
    • isAbstract

      static ScanFilter isAbstract()
      Filter for abstract classes 过滤抽象类
      Returns:
      filter | 过滤器
    • isEnum

      static ScanFilter isEnum()
      Filter for enums 过滤枚举
      Returns:
      filter | 过滤器
    • isRecord

      static ScanFilter isRecord()
      Filter for records 过滤 Record
      Returns:
      filter | 过滤器
    • isAnnotation

      static ScanFilter isAnnotation()
      Filter for annotations 过滤注解
      Returns:
      filter | 过滤器
    • hasAnnotation

      static ScanFilter hasAnnotation(Class<? extends Annotation> annotation)
      Filter for classes with specified annotation 过滤带指定注解的类
      Parameters:
      annotation - annotation class | 注解类
      Returns:
      filter | 过滤器
    • hasAnyAnnotation

      @SafeVarargs static ScanFilter hasAnyAnnotation(Class<? extends Annotation>... annotations)
      Filter for classes with any of specified annotations 过滤带任意指定注解的类
      Parameters:
      annotations - annotation classes | 注解类数组
      Returns:
      filter | 过滤器
    • hasAllAnnotations

      @SafeVarargs static ScanFilter hasAllAnnotations(Class<? extends Annotation>... annotations)
      Filter for classes with all specified annotations 过滤带所有指定注解的类
      Parameters:
      annotations - annotation classes | 注解类数组
      Returns:
      filter | 过滤器
    • isSubTypeOf

      static ScanFilter isSubTypeOf(Class<?> superType)
      Filter for subtypes of specified class 过滤指定类的子类型
      Parameters:
      superType - super type | 父类型
      Returns:
      filter | 过滤器
    • implementsInterface

      static ScanFilter implementsInterface(Class<?> interfaceType)
      Filter for classes implementing specified interface 过滤实现指定接口的类
      Parameters:
      interfaceType - interface type | 接口类型
      Returns:
      filter | 过滤器
    • nameStartsWith

      static ScanFilter nameStartsWith(String prefix)
      Filter by name prefix 按名称前缀过滤
      Parameters:
      prefix - name prefix | 名称前缀
      Returns:
      filter | 过滤器
    • nameEndsWith

      static ScanFilter nameEndsWith(String suffix)
      Filter by name suffix 按名称后缀过滤
      Parameters:
      suffix - name suffix | 名称后缀
      Returns:
      filter | 过滤器
    • simpleNameEndsWith

      static ScanFilter simpleNameEndsWith(String suffix)
      Filter by simple name suffix 按简单名称后缀过滤
      Parameters:
      suffix - simple name suffix | 简单名称后缀
      Returns:
      filter | 过滤器
    • nameMatches

      static ScanFilter nameMatches(String regex)
      Filter by name regex pattern 按名称正则模式过滤
      Parameters:
      regex - regex pattern | 正则模式
      Returns:
      filter | 过滤器
    • inPackage

      static ScanFilter inPackage(String packageName)
      Filter for classes in specified package 过滤指定包中的类
      Parameters:
      packageName - package name | 包名
      Returns:
      filter | 过滤器
    • hasModifier

      static ScanFilter hasModifier(int modifier)
      Filter by modifier 按修饰符过滤
      Parameters:
      modifier - modifier flag | 修饰符标志
      Returns:
      filter | 过滤器
    • isPublic

      static ScanFilter isPublic()
      Filter for public classes 过滤 public 类
      Returns:
      filter | 过滤器
    • isFinal

      static ScanFilter isFinal()
      Filter for final classes 过滤 final 类
      Returns:
      filter | 过滤器
    • all

      static ScanFilter all()
      Filter that accepts all classes 接受所有类的过滤器
      Returns:
      filter | 过滤器
    • none

      static ScanFilter none()
      Filter that rejects all classes 拒绝所有类的过滤器
      Returns:
      filter | 过滤器
    • isTopLevel

      static ScanFilter isTopLevel()
      Filter for non-inner classes 过滤非内部类
      Returns:
      filter | 过滤器
    • isInnerClass

      static ScanFilter isInnerClass()
      Filter for inner classes 过滤内部类
      Returns:
      filter | 过滤器