public class ClassScanner extends Object implements Serializable
类扫描器
| 限定符和类型 | 字段和说明 |
|---|---|
private Charset |
charset
编码
|
private Set<Class<?>> |
classes
扫描结果集
|
private Filter<Class<?>> |
classFilter
过滤器
|
private ClassLoader |
classLoader
类加载器
|
private boolean |
initialize
是否初始化类
|
private String |
packageDirName
包路径,用于文件中对路径操作
|
private String |
packageName
包名
|
private String |
packageNameWithDot
包名,最后跟一个点,表示包名,避免在检查前缀时的歧义
|
private String |
packagePath
包路径,用于jar中对路径操作,在Linux下与packageDirName一致
|
private static long |
serialVersionUID |
| 构造器和说明 |
|---|
ClassScanner()
构造,默认UTF-8编码
|
ClassScanner(String packageName)
构造,默认UTF-8编码
|
ClassScanner(String packageName,
Filter<Class<?>> classFilter)
构造,默认UTF-8编码
|
ClassScanner(String packageName,
Filter<Class<?>> classFilter,
Charset charset)
构造
|
| 限定符和类型 | 方法和说明 |
|---|---|
private void |
addIfAccept(Class<?> clazz)
通过过滤器,是否满足接受此类的条件
|
private void |
addIfAccept(String className)
通过过滤器,是否满足接受此类的条件
|
private Class<?> |
loadClass(String className)
加载类
|
Set<Class<?>> |
scan()
扫描包路径下满足class过滤器条件的所有class文件
|
private void |
scanFile(File file,
String rootDir)
扫描文件或目录中的类
|
private void |
scanJar(JarFile jar)
扫描jar包
|
private void |
scanJavaClassPaths()
扫描Java指定的ClassPath路径
|
static Set<Class<?>> |
scanPackage()
扫描该包路径下所有class文件
|
static Set<Class<?>> |
scanPackage(String packageName)
扫描该包路径下所有class文件
|
static Set<Class<?>> |
scanPackage(String packageName,
Filter<Class<?>> classFilter)
扫描包路径下满足class过滤器条件的所有class文件,
如果包路径为 com.abs + A.class 但是输入 abs会产生classNotFoundException 因为className 应该为 com.abs.A 现在却成为abs.A,此工具类对该异常进行忽略处理 |
static Set<Class<?>> |
scanPackageByAnnotation(String packageName,
Class<? extends Annotation> annotationClass)
扫描指定包路径下所有包含指定注解的类
|
static Set<Class<?>> |
scanPackageBySuper(String packageName,
Class<?> superClass)
扫描指定包路径下所有指定类或接口的子类或实现类,不包括指定父类本身
|
void |
setClassLoader(ClassLoader classLoader)
设置自定义的类加载器
|
void |
setInitialize(boolean initialize)
设置是否在扫描到类时初始化类
|
private String |
subPathBeforePackage(File file)
截取文件绝对路径中包名之前的部分
|
private static final long serialVersionUID
private final String packageName
private final String packageNameWithDot
private final String packageDirName
private final String packagePath
private final Charset charset
private ClassLoader classLoader
private boolean initialize
public ClassScanner()
public ClassScanner(String packageName)
packageName - 包名,所有包传入""或者nullpublic ClassScanner(String packageName, Filter<Class<?>> classFilter)
packageName - 包名,所有包传入""或者nullclassFilter - 过滤器,无需传入nullpublic static Set<Class<?>> scanPackageByAnnotation(String packageName, Class<? extends Annotation> annotationClass)
packageName - 包路径annotationClass - 注解类public static Set<Class<?>> scanPackageBySuper(String packageName, Class<?> superClass)
packageName - 包路径superClass - 父类或接口(不包括)public static Set<Class<?>> scanPackage(String packageName)
packageName - 包路径 com | com. | com.abs | com.abs.public static Set<Class<?>> scanPackage(String packageName, Filter<Class<?>> classFilter)
packageName - 包路径 com | com. | com.abs | com.abs.classFilter - class过滤器,过滤掉不需要的classpublic void setInitialize(boolean initialize)
initialize - 是否初始化类public void setClassLoader(ClassLoader classLoader)
classLoader - 类加载器private void scanJavaClassPaths()
private void scanFile(File file, String rootDir)
file - 文件或目录rootDir - 包名对应classpath绝对路径private void scanJar(JarFile jar)
jar - jar包private void addIfAccept(String className)
className - 类名private void addIfAccept(Class<?> clazz)
clazz - 类Copyright © 2020. All rights reserved.