Package org.miaixz.bus.core.lang.reflect
Class ClassScanner
java.lang.Object
org.miaixz.bus.core.lang.reflect.ClassScanner
- All Implemented Interfaces:
Serializable
类扫描器
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
ConstructorsConstructorDescription构造,默认UTF-8编码ClassScanner(String packageName) 构造,默认UTF-8编码ClassScanner(String packageName, Predicate<Class<?>> classPredicate) 构造,默认UTF-8编码ClassScanner(String packageName, Predicate<Class<?>> classPredicate, Charset charset) 构造 -
Method Summary
Modifier and TypeMethodDescription忽略加载错误扫描后,可以获得之前扫描时加载错误的类名字集合protected Class<?> 加载类scan()扫描包路径下满足class过滤器条件的所有class文件 此方法首先扫描指定包名下的资源目录,如果未扫描到,则扫描整个classpath中所有加载的类scan(boolean forceScanJavaClassPaths) 扫描包路径下满足class过滤器条件的所有class文件扫描该包路径下所有class文件,包括其他加载的jar或者类scanAllPackage(String packageName, Predicate<Class<?>> classFilter) 扫描包路径下和所有在classpath中加载的类,满足class过滤器条件的所有class文件, 如果包路径为 com.abs + A.class 但是输入 abs会产生classNotFoundException 因为className 应该为 com.abs.A 现在却成为abs.A,此工具类对该异常进行忽略处理scanAllPackageByAnnotation(String packageName, Class<? extends Annotation> annotationClass) 扫描指定包路径下所有包含指定注解的类,包括其他加载的jar或者类scanAllPackageBySuper(String packageName, Class<?> superClass) 扫描指定包路径下所有指定类或接口的子类或实现类,不包括指定父类本身,包括其他加载的jar或者类扫描classpath下所有class文件,如果classpath下已经有类,不再扫描其他加载的jar或者类scanPackage(String packageName) 扫描该包路径下所有class文件scanPackage(String packageName, Predicate<Class<?>> classFilter) 扫描包路径下满足class过滤器条件的所有class文件, 如果包路径为 com.abs + A.class 但是输入 abs会产生classNotFoundException 因为className 应该为 com.abs.A 现在却成为abs.A,此工具类对该异常进行忽略处理scanPackageByAnnotation(String packageName, Class<? extends Annotation> annotationClass) 扫描指定包路径下所有包含指定注解的类 如果classpath下已经有类,不再扫描其他加载的jar或者类scanPackageBySuper(String packageName, Class<?> superClass) 扫描指定包路径下所有指定类或接口的子类或实现类,不包括指定父类本身 如果classpath下已经有类,不再扫描其他加载的jar或者类voidsetClassLoader(ClassLoader classLoader) 设置自定义的类加载器voidsetIgnoreLoadError(boolean ignoreLoadError) 设置是否忽略所有错误voidsetInitialize(boolean initialize) 设置是否在扫描到类时初始化类
-
Constructor Details
-
ClassScanner
public ClassScanner()构造,默认UTF-8编码 -
ClassScanner
构造,默认UTF-8编码- Parameters:
packageName- 包名,所有包传入""或者null
-
ClassScanner
构造,默认UTF-8编码- Parameters:
packageName- 包名,所有包传入""或者nullclassPredicate- 过滤器,无需传入null
-
ClassScanner
构造- Parameters:
packageName- 包名,所有包传入""或者nullclassPredicate- 过滤器,无需传入nullcharset- 编码
-
-
Method Details
-
scanAllPackageByAnnotation
public static Set<Class<?>> scanAllPackageByAnnotation(String packageName, Class<? extends Annotation> annotationClass) 扫描指定包路径下所有包含指定注解的类,包括其他加载的jar或者类- Parameters:
packageName- 包路径annotationClass- 注解类- Returns:
- 类集合
-
scanPackageByAnnotation
public static Set<Class<?>> scanPackageByAnnotation(String packageName, Class<? extends Annotation> annotationClass) 扫描指定包路径下所有包含指定注解的类 如果classpath下已经有类,不再扫描其他加载的jar或者类- Parameters:
packageName- 包路径annotationClass- 注解类- Returns:
- 类集合
-
scanAllPackageBySuper
扫描指定包路径下所有指定类或接口的子类或实现类,不包括指定父类本身,包括其他加载的jar或者类- Parameters:
packageName- 包路径superClass- 父类或接口(不包括)- Returns:
- 类集合
-
scanPackageBySuper
扫描指定包路径下所有指定类或接口的子类或实现类,不包括指定父类本身 如果classpath下已经有类,不再扫描其他加载的jar或者类- Parameters:
packageName- 包路径superClass- 父类或接口(不包括)- Returns:
- 类集合
-
scanAllPackage
扫描该包路径下所有class文件,包括其他加载的jar或者类- Returns:
- 类集合
-
scanPackage
扫描classpath下所有class文件,如果classpath下已经有类,不再扫描其他加载的jar或者类- Returns:
- 类集合
-
scanPackage
扫描该包路径下所有class文件- Parameters:
packageName- 包路径 com | com. | com.abs | com.abs.- Returns:
- 类集合
-
scanAllPackage
扫描包路径下和所有在classpath中加载的类,满足class过滤器条件的所有class文件, 如果包路径为 com.abs + A.class 但是输入 abs会产生classNotFoundException 因为className 应该为 com.abs.A 现在却成为abs.A,此工具类对该异常进行忽略处理- Parameters:
packageName- 包路径 com | com. | com.abs | com.abs.classFilter- class过滤器,过滤掉不需要的class- Returns:
- 类集合
-
scanPackage
扫描包路径下满足class过滤器条件的所有class文件, 如果包路径为 com.abs + A.class 但是输入 abs会产生classNotFoundException 因为className 应该为 com.abs.A 现在却成为abs.A,此工具类对该异常进行忽略处理- Parameters:
packageName- 包路径 com | com. | com.abs | com.abs.classFilter- class过滤器,过滤掉不需要的class- Returns:
- 类集合
-
scan
扫描包路径下满足class过滤器条件的所有class文件 此方法首先扫描指定包名下的资源目录,如果未扫描到,则扫描整个classpath中所有加载的类- Returns:
- 类集合
-
scan
扫描包路径下满足class过滤器条件的所有class文件- Parameters:
forceScanJavaClassPaths- 是否强制扫描其他位于classpath关联jar中的类- Returns:
- 类集合
-
getClassesOfLoadError
忽略加载错误扫描后,可以获得之前扫描时加载错误的类名字集合- Returns:
- 加载错误的类名字集合
-
setIgnoreLoadError
public void setIgnoreLoadError(boolean ignoreLoadError) 设置是否忽略所有错误- Parameters:
ignoreLoadError- 是否忽略错误
-
setInitialize
public void setInitialize(boolean initialize) 设置是否在扫描到类时初始化类- Parameters:
initialize- 是否初始化类
-
setClassLoader
设置自定义的类加载器- Parameters:
classLoader- 类加载器
-
loadClass
加载类- Parameters:
className- 类名- Returns:
- 加载的类
-