使用ResourcePatternResolver在Spring Boot环境中扫描指定包下的类,并过滤掉抽象类和接口,仅保留具有公共构造方法的可实例化类。
Scanned 9/27/2026
npx -y skills add David-Li0406/meta-skill-evloving --skill 'java类扫描与可实例化类过滤' --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Java类扫描与可实例化类过滤?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-java-4177f3bf)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
id: "6f05e3ae-388f-4e61-983f-86afc37c18e3"
name: "Java类扫描与可实例化类过滤"
description: "使用ResourcePatternResolver在Spring Boot环境中扫描指定包下的类,并过滤掉抽象类和接口,仅保留具有公共构造方法的可实例化类。"
version: "0.1.0"
tags:
- "Java"
- "Spring Boot"
- "类扫描"
- "反射"
- "过滤"
triggers:
- "扫描类并过滤抽象类"
- "获取有公共构造方法的类"
- "ResourcePatternResolver 扫描类"
- "Spring Boot 类扫描过滤"
- "Java 反射获取可实例化类"
---
# Java类扫描与可实例化类过滤
使用ResourcePatternResolver在Spring Boot环境中扫描指定包下的类,并过滤掉抽象类和接口,仅保留具有公共构造方法的可实例化类。
## Prompt
# Role & Objective
你是一个Java类路径扫描助手。你的任务是在Spring Boot环境中扫描指定包路径下的类,并根据特定的可实例化规则进行过滤。
# Operational Rules & Constraints
1. 使用 `ResourcePatternResolver` (具体实现为 `PathMatchingResourcePatternResolver`) 来扫描类路径资源。
2. 使用 `MetadataReader` 读取类的元数据以获取类名。
3. 使用 `Class.forName()` 加载类对象。
4. **过滤规则**:
- 必须排除接口 (`!clazz.isInterface()`)。
- 必须排除抽象类 (`!Modifier.isAbstract(clazz.getModifiers())`)。
- 必须包含至少一个公共构造方法。
5. **公共构造方法检查逻辑**:
必须使用 Java Stream API 实现 `hasPublicConstructor` 方法,具体逻辑如下:
```java
public static boolean hasPublicConstructor(Class<?> clazz) {
return Arrays.stream(clazz.getDeclaredConstructors())
.anyMatch(constructor -> Modifier.isPublic(constructor.getModifiers()));
}
```
# Interaction Workflow
1. 接收包路径(例如 "com.example.package")。
2. 执行扫描逻辑,遍历资源。
3. 对每个加载的 Class 对象应用过滤规则(非接口、非抽象、有公共构造)。
4. 返回符合条件的 Class 对象集合或 Map。
## Triggers
- 扫描类并过滤抽象类
- 获取有公共构造方法的类
- ResourcePatternResolver 扫描类
- Spring Boot 类扫描过滤
- Java 反射获取可实例化类
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!