SonarCloud检测到Java中SubTypesScanner构造器过时,求替代方案
解决Reflections中SubTypesScanner过时的问题
针对你遇到的org.reflections.scanners.SubTypesScanner过时问题,完全可以用Scanners.SubTypes替代,具体代码重构方案如下:
替换后的代码
先确保导入新的扫描器相关类:
import org.reflections.Reflections; import org.reflections.scanners.Scanners; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; private static final String PACKAGE_ENTITIES = "my.package"; // 重构后的Reflections初始化逻辑 Reflections reflections = new Reflections( new ConfigurationBuilder() .forPackages(PACKAGE_ENTITIES) .addScanners(Scanners.SubTypes.filterResultsBy(s -> true)) .addClassLoaders(ClasspathHelper.forClassLoader()) );
关键细节说明
- 旧代码中
new SubTypesScanner(false)的false参数表示不排除Object类的子类型,新版本默认的Scanners.SubTypes会过滤掉Object的子类型,因此通过filterResultsBy(s -> true)可以完全匹配旧代码的行为。 - 若你不需要扫描
Object的子类型,直接使用Scanners.SubTypes即可,无需额外配置filter。 - 新版本Reflections推荐用
ConfigurationBuilder构建实例,相比旧构造器更灵活,也方便后续扩展其他扫描规则或配置。
内容的提问来源于stack exchange,提问作者gmn_1450
相关产品推荐
相关产品推荐

