Package org.aoju.bus.core.toolkit
Class ClassKit
java.lang.Object
org.aoju.bus.core.toolkit.ClassKit
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic intcompareConstructorFit(Constructor<?> left, Constructor<?> right, Class<?>[] actual) 根据两个构造函数与一组运行时参数类型的匹配程度进行比较 从而使比较结果按顺序排序的列表首先返回最佳匹配(最低)static intcompareMethodFit(Method left, Method right, Class<?>[] actual) 根据两个方法与一组运行时参数类型的匹配程度,比较两个方法的相对适应性, 这样,按比较结果排序的列表将首先返回最匹配的(最低)static intcompareParameterTypes(org.aoju.bus.core.toolkit.ClassKit.Executable left, org.aoju.bus.core.toolkit.ClassKit.Executable right, Class<?>[] actual) 根据两个可执行文件与一组运行时参数类型的匹配程度来比较两个可执行文件的相对适合度 以便按比较结果排序的列表将首先返回最佳匹配项static boolean编译指定的源码文件static StringconvertClassNameToResourcePath(String className) 把一个'.'static InitialContextcreateInitialContext(Map<String, String> environment) static InitialDirContextcreateInitialDirContext(Map<String, String> environment) static boolean指定类是否与给定的类名相同static <T> TfillBean(T bean, ValueProvider<String> valueProvider, CopyOptions copyOptions) 填充Bean的核心方法static Class<?> forName(String name, ClassLoader classLoader) 替换Class. forname(),它也返回原语的类实例(例如“int”)和数组类名(例如“[]”).static MethodgetAccessibleMethod(Class<?> cls, String methodName, Class<?>... parameterTypes) 返回具有给定名称和参数的可访问方法(即可以通过反射调用的方法)static MethodgetAccessibleMethod(Method method) 返回实现指定方法的可访问方法(即可以通过反射调用的方法)。getAllFieldList(Class clazz) 获取类所有的字段信息 ps: 这个方法有个问题 如果子类和父类有相同的字段 会不会重复 1.static Field[]getAllFields(Class<?> cls) 获取给定类及其父类的所有字段(如果有).getAllFieldsList(Class<?> cls) 获取给定类及其父类的所有字段(如果有).getAllFieldsReadMethods(Class clazz) 获取所有字段的 read 方法列表getAllInterfaces(Class<?> cls) 获取由给定接口实现的所有接口的List类及其超类.static voidgetAllInterfaces(Class<?> cls, HashSet<Class<?>> interfacesFound) 获取指定类的接口.getAllSuperclasses(Class<?> cls) 获取给定类的超类的List.static <A extends Annotation>
AgetAnnotation(Method method, Class<A> annotationCls, boolean searchSupers, boolean ignoreAccess) 获取具有给定注释类型的注释对象,该注释类型出现在给定方法上,或可选地出现在超类和接口中的任何等效方法上。static AttributesgetAttributes(String uri, String... attrIds) 获取指定容器环境的对象的属性 如获取DNS属性,则URI为类似:dns:aoju.orgstatic Class<?> getCglibActualClass(Class<?> clazz) 获取cglib代理的真实类static <T> Class<T> getClass(T object) null安全的获取对象类型static Class<?>[]getClasses(Object... objects) 获得对象数组的类数组static ClassLoader获取ClassLoader获取顺序如下:static StringgetClassName(Class<?> clazz, boolean isSimple) 获取类名 类名并不包含“.class”这个扩展名 例如:ClassKit这个类static StringgetClassName(Object object, boolean isSimple) 获取类名static String获得ClassPath,将编码后的中文路径解码为原字符 这个ClassPath路径会文件路径被标准化处理static StringgetClassPath(boolean isEncoded) 获得ClassPath,这个ClassPath路径会文件路径被标准化处理static StringgetClassVar(String className) 获取对应类的默认变量名static FieldgetDeclaredField(Class<?> clazz, String fieldName) 查找指定类中的所有字段(包括非public字段), 字段不存在则返回nullstatic FieldgetDeclaredField(Class<?> clazz, String fieldName, boolean forceAccess) 按名称获取可访问的Field,如果请求则中断作用域。static Field[]getDeclaredFields(Class<?> clazz) 查找指定类中的所有字段(包括非public字段)static MethodgetDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) 查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法 找不到方法会返回nullgetDeclaredMethodNames(Class<?> clazz) 获得指定类中的Public方法名 去重重载的方法static MethodgetDeclaredMethodOfObject(Object object, String methodName, Object... args) 查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法static Method[]getDeclaredMethods(Class<?> clazz) 获得声明的所有方法,包括本类及其父类和接口的所有方法和Object类的方法static ClassLoaderstatic ObjectgetDefaultValue(Class<?> clazz) 获取指定类型分的默认值 默认值规则为:static Object[]getDefaultValues(Class<?>... classes) 获得默认值列表static Field根据名称获取可访问的Field范围static Field按名称获取可访问的Field,如果请求则中断作用域.getFieldsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取用给定注释注释的给定类及其父类的所有字段(如果有).static Field[]getFieldsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取用给定注释注释的给定类及其父类的所有字段(如果有).static StandardJavaFileManagerstatic StandardJavaFileManagergetFileManager(DiagnosticListener<? super JavaFileObject> diagnosticListener) static JarLoadersgetJarClassLoader(File jarOrDir) 创建新的JarLoaders,并使用此Classloader加载目录下的class文件和jar文件static String[]static URLgetLocation(Class<?> clazz) 获取class类路径URL, 不管是否在jar包中都会返回文件夹的路径 class在jar包中返回jar所在文件夹,class不在jar中返回文件夹目录 jdk中的类不能使用此方法static StringgetLocationPath(Class<?> clazz) 获取class类路径, 不管是否在jar包中都会返回文件夹的路径 class在jar包中返回jar所在文件夹,class不在jar中返回文件夹目录 jdk中的类不能使用此方法static ManifestgetManifest(File classpathItem) 获取 jar 包文件或项目目录下的 Manifeststatic ManifestgetManifest(Class<?> cls) 根据 class 获取 jar 包文件的 Manifeststatic ManifestgetManifest(JarURLConnection connection) 根据JarURLConnection获取 jar 包文件的 Manifeststatic ManifestgetManifest(JarFile jarFile) 根据JarURLConnection获取 jar 包文件的 Manifeststatic MethodgetMatchingAccessibleMethod(Class<?> cls, String methodName, Class<?>... parameterTypes) 查找与给定名称匹配且具有兼容参数的可访问方法.static MethodgetMatchingMethod(Class<?> cls, String methodName, Class<?>... parameterTypes) 检索是否可访问的方法getMethodsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取使用给定注释进行注释的给定类的所有类级公共方法.getMethodsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls, boolean searchSupers, boolean ignoreAccess) 获取使用给定注释进行注释的给定类的所有方法.static Method[]getMethodsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取使用给定注释进行注释的给定类的所有类级公共方法.static Method[]getMethodsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls, boolean searchSupers, boolean ignoreAccess) 获取使用给定注释进行注释的给定类的所有方法.static floatgetObjectTransformationCost(Class<?> srcClass, Class<?> destClass) 获取将源类转换为目标类所需的步骤数 这表示对象层次图中的步骤数.static StringgetPackage(Class<?> clazz) 获得给定类所在包的名称 例如:org.aoju.bus.core.toolkitstatic StringgetPackageName(Class<?> clazz) 获取给定类的包的名称.static StringgetPackageName(String className) 获取给定类的包的名称.static StringgetPackagePath(Class<?> clazz) 获得给定类所在包的路径 例如:static ObjectgetPrimitiveDefaultValue(Class<?> clazz) 获取指定原始类型分的默认值 默认值规则为:static floatgetPrimitivePromotionCost(Class<?> srcClass, Class<?> destClass) 获取将原始数字提升为另一种类型所需的步骤数static MethodgetPublicMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) 查找指定Public方法 如果找不到对应的方法或方法不为public的则返回nullgetPublicMethodNames(Class<?> clazz) 获得指定类中的Public方法名 去重重载的方法static Method[]getPublicMethods(Class<?> clazz) 获得本类及其父类所有Public方法getPublicMethods(Class<?> clazz, Method... excludeMethods) 获得指定类过滤后的Public方法列表getPublicMethods(Class<?> clazz, String... excludeMethodNames) 获得指定类过滤后的Public方法列表getPublicMethods(Class<?> clazz, Predicate<Method> filter) 获得指定类过滤后的Public方法列表static StringgetShortClassName(Class<?> cls) 从Class中获取类名减去包名.static StringgetShortClassName(Object object, String valueIfNull) 获取类名减去Class的包名static StringgetShortClassName(String className) 从字符串中获取类名减去包名static StringgetSimpleName(Class<?> cls) 简单的类名static StringgetSimpleName(Class<?> cls, String valueIfNull) 简单的类名static StringgetSimpleName(Object object) 简单的类名static StringgetSimpleName(Object object, String valueIfNull) 简单的类名static JavaCompiler.CompilationTaskgetTask(JavaFileManager fileManager, DiagnosticListener<? super JavaFileObject> diagnosticListener, Iterable<String> options, Iterable<? extends JavaFileObject> compilationUnits) 新建编译任务static String获取临时文件路径(绝对路径)static floatgetTotalTransformationCost(Class<?>[] srcArgs, org.aoju.bus.core.toolkit.ClassKit.Executable executable) 返回source参数列表中每个类的对象转换成本之和static Class<?> getTypeArgument(Class<?> clazz) 获得给定类的第一个泛型参数static Class<?> getTypeArgument(Class<?> clazz, int index) 获得给定类的泛型参数static Class<?> getUserClass(Class<?> clazz) 为给定的类返回用户定义的类:通常只是给定的类, 但对于cglib生成的子类,则是原始类.static Class<?> getUserClass(Object instance) 为给定实例返回用户定义的类:通常只是给定实例的类, 但如果是cglib生成的子类,则返回原始类static String获取用户路径(绝对路径)获取一个Iterable,它可以按照从子类到超类的升序遍历类层次结构,不包括接口.hierarchy(Class<?> type, ClassKit.Interfaces interfacesBehavior) 获取一个Iterable,它可以按照从子类到超类的升序遍历类层次结构.static <T> T执行方法 可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法static <T> T执行方法 可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 非单例模式,如果是非静态方法,每次创建一个新对象static <T> T执行方法 可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法static <T> T执行方法 可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法 非单例模式,如果是非静态方法,每次创建一个新对象static ObjectinvokeExactMethod(Object object, String methodName) 调用参数类型与对象类型完全匹配的方法static ObjectinvokeExactMethod(Object object, String methodName, Object... args) 调用没有参数的方法static ObjectinvokeExactMethod(Object object, String methodName, Object[] args, Class<?>[] parameterTypes) 调用参数类型与给定参数类型完全匹配的方法static ObjectinvokeExactStaticMethod(Class<?> cls, String methodName, Object... args) 调用参数类型与对象类型完全匹配的static方法static ObjectinvokeExactStaticMethod(Class<?> cls, String methodName, Object[] args, Class<?>[] parameterTypes) 调用参数类型与给定参数类型完全匹配的static方法static ObjectinvokeMethod(Object object, boolean forceAccess, String methodName) 调用没有参数的命名方法.static ObjectinvokeMethod(Object object, boolean forceAccess, String methodName, Object... args) 调用其参数类型与对象类型匹配的已命名方法static ObjectinvokeMethod(Object object, boolean forceAccess, String methodName, Object[] args, Class<?>[] parameterTypes) 调用其参数类型与对象类型匹配的已命名方法.static ObjectinvokeMethod(Object object, String methodName) 调用没有参数的命名方法.static ObjectinvokeMethod(Object object, String methodName, Object... args) 调用其参数类型与对象类型匹配的已命名方法.static ObjectinvokeMethod(Object object, String methodName, Object[] args, Class<?>[] parameterTypes) 调用其参数类型与对象类型匹配的已命名方法.static ObjectinvokeStaticMethod(Class<?> cls, String methodName, Object... args) 调用一个名为static的方法,该方法的参数类型与对象类型匹配static ObjectinvokeStaticMethod(Class<?> cls, String methodName, Object[] args, Class<?>[] parameterTypes) 调用一个名为static的方法,该方法的参数类型与对象类型匹配static booleanisAbstract(Class<?> clazz) 是否为抽象类static booleanisAbstract(Method method) 是否抽象方法static booleanisAbstractOrInterface(Class<?> clazz) 是否为抽象类或接口static booleanisAccessible(Member member) 返回Member是否可访问static booleanisAllAssignableFrom(Class<?>[] types1, Class<?>[] types2) 比较判断types1和types2两组类,如果types1中所有的类都与types2对应位置的类相同,或者是其父类或接口,则返回truestatic booleanisAssignable(Class<?>[] classArray, Class<?>... toClassArray) 检查目标类是否可以从原类转化 转化包括: 1、原类是对象,目标类型是原类型实现的接口 2、目标类型是原类型的父类 3、两者是原始类型或者包装类型(相互转换)static booleanisAssignable(Class<?>[] classArray, Class<?>[] toClassArray, boolean autoboxing) 检查目标类是否可以从原类转化 转化包括: 1、原类是对象,目标类型是原类型实现的接口 2、目标类型是原类型的父类 3、两者是原始类型或者包装类型(相互转换)static booleanisAssignable(Class<?> classArray, Class<?> toClassArray) 检查目标类是否可以从原类转化 转化包括: 1、原类是对象,目标类型是原类型实现的接口 2、目标类型是原类型的父类 3、两者是原始类型或者包装类型(相互转换)static booleanisAssignable(Class<?> cls, Class<?> toClass, boolean autoboxing) static booleanisBasicType(Class<?> clazz) 是否为基本类型(包括包装类和原始类)static booleanisCglibProxy(Object object) 验证类是否是cglib代理对象static booleanisCglibProxyClass(Class<?> clazz) 验证类是否是cglib生成类static booleanisCglibProxyClassName(String className) 验证类名是否为cglib代理类名static boolean判断类是否为枚举类型static booleanisInterface(Class<?> clazz) 是否为接口static booleanisJdkClass(Class<?> clazz) 是否为JDK中定义的类或接口,判断依据:static booleanisMatchingConstructor(Constructor<?> method, Class<?>[] parameterTypes) static booleanisMatchingExecutable(org.aoju.bus.core.toolkit.ClassKit.Executable method, Class<?>[] parameterTypes) static booleanisMatchingMethod(Method method, Class<?>[] parameterTypes) static booleanisNormalClass(Class<?> clazz) 是否为标准的类 这个类必须:static booleanisNotPublic(Class<?> clazz) 指定类是否为非publicstatic booleanisNotPublic(Method method) 指定方法是否为非publicstatic booleanisNumberOrStringType(Class<?> type) 判断这个字段是否是数字类型或字符串类型static booleanisPackageAccess(int modifiers) 返回给定的一组修饰符是否允许程序包访问static boolean指定类是否被提供,使用默认ClassLoader 通过调用loadClass(String, boolean, ClassLoader)方法尝试加载指定类名的类,如果加载失败返回false 加载失败的原因可能是此类不存在或其关联引用类不存在static booleanisPresent(String className, ClassLoader classLoader) 指定类是否被提供 通过调用loadClass(String, boolean, ClassLoader)方法尝试加载指定类名的类,如果加载失败返回false 加载失败的原因可能是此类不存在或其关联引用类不存在static booleanisPrimitiveOrWrapper(Class<?> type) static booleanisPrimitiveWrapper(Class<?> clazz) 是否为包装类型static boolean指定类是否为Publicstatic boolean指定方法是否为Publicstatic booleanisSimpleTypeOrArray(Class<?> clazz) 是否简单值类型或简单值类型的数组 包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class及其数组static booleanisSimpleValueType(Class<?> clazz) 是否为简单值类型 包括:static boolean是否为静态方法static booleanisSynthetic(Class<?> clazz) 是否是合成类(由java编译器生成的)static booleanisSynthetic(Field field) 是否是合成字段(由java编译器生成的)static booleanisSynthetic(Method method) 是否是合成方法(由java编译器生成的)static booleanisUserLevelMethod(Method method) static <T> ServiceLoader<T> 加载服务static <T> ServiceLoader<T> load(Class<T> clazz, ClassLoader loader) 加载服务static Class<?> 加载外部类static <T> Class<T> 加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader并初始化类(调用static模块内容和初始化static属性) 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:static <T> Class<T> 加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:static Class<?> loadClass(String name, boolean isInitialized, ClassLoader classLoader) 加载类,通过传入类的字符串,返回其对应的类名 此方法支持缓存,第一次被加载的类之后会读取缓存中的类 加载失败的原因可能是此类不存在或其关联引用类不存在 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:static <T> T加载第一个服务,如果用户定义了多个接口实现类,只获取第一个static <T> TloadFirstAvailable(Class<T> clazz) 加载第一个可用服务,如果用户定义了多个接口实现类,只获取第一个不报错的服务。static <T> List<T> 加载服务 并已list列表返回static <T> List<T> loadList(Class<T> clazz, ClassLoader loader) 加载服务 并已list列表返回static Class<?> loadPrimitiveClass(String name) 加载原始类型的类 包括原始类型、原始类型数组和voidstatic <T> TnewInstance(Class<T> clazz) 获取对象的实例化static Class<?>[]primitivesToWrappers(Class<?>... classes) 将原语类对象的指定数组转换为其相应包装器类对象的数组static Class<?> primitiveToWrapper(Class<?> cls) 将指定的基元类对象转换为其对应的包装器类对象static ObjectreadDeclaredField(Object target, String fieldName) 读取指定的publicField只考虑指定对象的类.static ObjectreadDeclaredField(Object target, String fieldName, boolean forceAccess) 按名称获取Field值 只考虑指定对象的类.static ObjectreadDeclaredStaticField(Class<?> cls, String fieldName) 按名称获取staticField的值。static ObjectreadDeclaredStaticField(Class<?> cls, String fieldName, boolean forceAccess) 按名称获取staticField的值。static ObjectReads the namedpublicField.static Object读取指定的Field将考虑超类.static Object读取一个可访问的Field.static Object读取一个可访问的Field.static ObjectreadStaticField(Class<?> cls, String fieldName) 读取指定的public staticField。static ObjectreadStaticField(Class<?> cls, String fieldName, boolean forceAccess) 读取指定的staticField,将考虑超类static ObjectreadStaticField(Field field) 读取可访问的staticField.static ObjectreadStaticField(Field field, boolean forceAccess) 读取一个静态Field.static voidremoveFinalModifier(Field field) 移除修饰符Field.static voidremoveFinalModifier(Field field, boolean forceAccess) 移除修饰符Field.static Class<?> resolveClassName(String className, ClassLoader classLoader) 将给定的类名称解析为Class实例static Class<?> static MethodsetAccessible(Method method) 设置方法为可访问static booleansetAccessibleWorkaround(AccessibleObject accessibleObject) 默认访问超类的解决方法static Class<?>[]static Class<?>[]wrappersToPrimitives(Class<?>... classes) 将包装器类对象的指定数组转换为其相应基元类对象的数组static Class<?> wrapperToPrimitive(Class<?> cls) 将指定的包装器类转换为其对应的基元类static voidwriteDeclaredField(Object target, String fieldName, Object value) 写一个publicField只考虑指定的类.static voidwriteDeclaredField(Object target, String fieldName, Object value, boolean forceAccess) 处理publicField只考虑指定的类.static voidwriteDeclaredStaticField(Class<?> cls, String fieldName, Object value) 写一个命名public staticField只考虑指定的类.static voidwriteDeclaredStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) 写一个命名的staticField只考虑指定的类。static voidwriteField(Object target, String fieldName, Object value) 处理publicField将考虑超类static voidwriteField(Object target, String fieldName, Object value, boolean forceAccess) 处理publicField将考虑超类.static voidwriteField(Field field, Object target, Object value) 写一个可访问的Field.static voidwriteField(Field field, Object target, Object value, boolean forceAccess) 写一个可访问的Field.static voidwriteStaticField(Class<?> cls, String fieldName, Object value) 写一个命名public staticField将考虑超类static voidwriteStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) 写一个命名的staticField将考虑超类.static voidwriteStaticField(Field field, Object value) 写一个public staticField.static voidwriteStaticField(Field field, Object value, boolean forceAccess) 写一个静态方法Field.
-
Field Details
-
SYSTEM_COMPILER
java 编译器
-
-
Constructor Details
-
ClassKit
public ClassKit()
-
-
Method Details
-
getClass
null安全的获取对象类型- Type Parameters:
T- 对象类型- Parameters:
object- 对象,如果为null返回null- Returns:
- 对象类型, 提供对象如果为
null返回null
-
getClassName
-
getClassName
-
getClasses
-
equals
-
getPublicMethodNames
-
getPublicMethods
-
getPublicMethods
-
getPublicMethods
-
getPublicMethods
-
getPublicMethod
public static Method getPublicMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) throws SecurityException 查找指定Public方法 如果找不到对应的方法或方法不为public的则返回null- Parameters:
clazz- 类methodName- 方法名paramTypes- 参数类型- Returns:
- 方法
- Throws:
SecurityException- 无权访问抛出异常
-
getDeclaredMethodNames
-
getDeclaredMethods
-
getDeclaredMethodOfObject
public static Method getDeclaredMethodOfObject(Object object, String methodName, Object... args) throws SecurityException 查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法- Parameters:
object- 被查找的对象methodName- 方法名args- 参数- Returns:
- 方法
- Throws:
SecurityException- 无访问权限抛出异常
-
getDeclaredMethod
public static Method getDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) throws SecurityException 查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法 找不到方法会返回null- Parameters:
clazz- 被查找的类methodName- 方法名parameterTypes- 参数类型- Returns:
- 方法
- Throws:
SecurityException- 无访问权限抛出异常
-
getDeclaredFields
查找指定类中的所有字段(包括非public字段)- Parameters:
clazz- 被查找字段的类- Returns:
- 字段
- Throws:
SecurityException- 安全异常
-
getJavaClassPaths
- Returns:
- 获得Java ClassPath路径,不包括 jre
-
getUserHome
-
getTmpDir
-
isAllAssignableFrom
-
invoke
-
invoke
执行方法 可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法- Type Parameters:
T- 对象类型- Parameters:
classNameWithMethodName- 类名和方法名表达式isSingleton- 是否为单例对象,如果此参数为false,每次执行方法时创建一个新对象args- 参数,必须严格对应指定方法的参数类型和数量- Returns:
- 返回结果
-
invoke
-
invoke
public static <T> T invoke(String className, String methodName, boolean isSingleton, Object... args) 执行方法 可执行Private方法,也可执行static方法 执行非static方法时,必须满足对象有默认构造方法- Type Parameters:
T- 对象类型- Parameters:
className- 类名,完整类路径methodName- 方法名isSingleton- 是否为单例对象,如果此参数为false,每次执行方法时创建一个新对象args- 参数,必须严格对应指定方法的参数类型和数量- Returns:
- 返回结果
-
isPrimitiveWrapper
是否为包装类型- Parameters:
clazz- 类- Returns:
- 是否为包装类型
-
isBasicType
是否为基本类型(包括包装类和原始类)- Parameters:
clazz- 类- Returns:
- 是否为基本类型
-
isSimpleTypeOrArray
是否简单值类型或简单值类型的数组 包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class及其数组- Parameters:
clazz- 属性类- Returns:
- 是否简单值类型或简单值类型的数组
-
isSimpleValueType
是否为简单值类型 包括:原始类型 String CharSequence Number Date URI URL Locale Class- Parameters:
clazz- 类clazz- 类- Returns:
- 是否为简单值类型
-
isAssignable
-
isAssignable
-
isAssignable
-
isAssignable
-
isPublic
指定类是否为Public- Parameters:
clazz- 类- Returns:
- 是否为public
-
isPublic
指定方法是否为Public- Parameters:
method- 方法- Returns:
- 是否为public
-
isNotPublic
指定类是否为非public- Parameters:
clazz- 类- Returns:
- 是否为非public
-
isNotPublic
指定方法是否为非public- Parameters:
method- 方法- Returns:
- 是否为非public
-
isStatic
-
setAccessible
-
isSynthetic
是否是合成字段(由java编译器生成的)- Parameters:
field- 字段- Returns:
- 是否是合成字段
-
isSynthetic
是否是合成方法(由java编译器生成的)- Parameters:
method- 方法- Returns:
- 是否是合成方法
-
isSynthetic
是否是合成类(由java编译器生成的)- Parameters:
clazz- 类- Returns:
- 是否是合成
-
isAbstract
-
isAbstract
-
isNormalClass
是否为标准的类 这个类必须:1、非接口 2、非抽象类 3、非Enum枚举 4、非数组 5、非注解 6、非原始类型(int, long等)
- Parameters:
clazz- 类- Returns:
- 是否为标准类
-
isEnum
-
getTypeArgument
-
getTypeArgument
-
getPackage
-
getPackagePath
-
getDefaultValue
-
getPrimitiveDefaultValue
-
getDefaultValues
-
getClassLoader
获取ClassLoader获取顺序如下:1、获取当前线程的ContextClassLoader 2、获取
ClassKit类对应的ClassLoader 3、获取系统ClassLoader(ClassLoader.getSystemClassLoader())- Returns:
- 类加载器
-
getClassPath
获得ClassPath,将编码后的中文路径解码为原字符 这个ClassPath路径会文件路径被标准化处理- Returns:
- ClassPath
-
getClassPath
获得ClassPath,这个ClassPath路径会文件路径被标准化处理- Parameters:
isEncoded- 是否编码路径中的中文- Returns:
- ClassPath
-
fillBean
填充Bean的核心方法- Type Parameters:
T- Bean类型- Parameters:
bean- BeanvalueProvider- 值提供者copyOptions- 拷贝选项,见CopyOptions- Returns:
- Bean
-
loadClass
加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader并初始化类(调用static模块内容和初始化static属性) 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
- Type Parameters:
T- 对象- Parameters:
name- 类名- Returns:
- 类名对应的类
- Throws:
InternalException- 没有类名对应的类时抛出此异常
-
loadClass
加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
- Type Parameters:
T- 对象- Parameters:
name- 类名isInitialized- 是否初始化类(调用static模块内容和初始化static属性)- Returns:
- 类名对应的类
- Throws:
InternalException- 没有类名对应的类时抛出此异常
-
loadClass
public static Class<?> loadClass(String name, boolean isInitialized, ClassLoader classLoader) throws InternalException 加载类,通过传入类的字符串,返回其对应的类名 此方法支持缓存,第一次被加载的类之后会读取缓存中的类 加载失败的原因可能是此类不存在或其关联引用类不存在 扩展Class.forName(String, boolean, ClassLoader)方法,支持以下几类类名的加载:1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
- Parameters:
name- 类名isInitialized- 是否初始化类(调用static模块内容和初始化static属性)classLoader-ClassLoader,null则使用系统默认ClassLoader- Returns:
- 类名对应的类
- Throws:
InternalException- 没有类名对应的类时抛出此异常
-
loadPrimitiveClass
-
getJarClassLoader
创建新的JarLoaders,并使用此Classloader加载目录下的class文件和jar文件- Parameters:
jarOrDir- jar文件或者包含jar和class文件的目录- Returns:
JarLoaders
-
loadClass
-
isPresent
指定类是否被提供,使用默认ClassLoader 通过调用loadClass(String, boolean, ClassLoader)方法尝试加载指定类名的类,如果加载失败返回false 加载失败的原因可能是此类不存在或其关联引用类不存在- Parameters:
className- 类名- Returns:
- 是否被提供
-
isPresent
指定类是否被提供 通过调用loadClass(String, boolean, ClassLoader)方法尝试加载指定类名的类,如果加载失败返回false 加载失败的原因可能是此类不存在或其关联引用类不存在- Parameters:
className- 类名classLoader-ClassLoader- Returns:
- 是否被提供
-
getPackageName
-
getPackageName
-
forName
public static Class<?> forName(String name, ClassLoader classLoader) throws ClassNotFoundException, LinkageError 替换Class. forname(),它也返回原语的类实例(例如“int”)和数组类名(例如“[]”). 还能够以Java源代码风格解析内部类名(例如,“java.lang.Thread 用" State"代替"java.lang.Thread$State").- Parameters:
name- 类的名称classLoader- 要使用的类装入器(可能是null,表示默认的类装入器)- Returns:
- 提供的名称的类实例
- Throws:
ClassNotFoundException- 如果没有找到该类LinkageError- 如果无法加载类文件
-
resolvePrimitiveClassName
-
getDefaultClassLoader
-
resolveClassName
public static Class<?> resolveClassName(String className, ClassLoader classLoader) throws IllegalArgumentException 将给定的类名称解析为Class实例- Parameters:
className- 类名称classLoader- 使用的类加载器- Returns:
- 提供的名称的类实例
- Throws:
IllegalArgumentException- 如果类名不可解析(即找不到该类或无法加载该类文件)- See Also:
-
getShortClassName
-
getShortClassName
-
getShortClassName
-
getSimpleName
-
getSimpleName
-
getSimpleName
-
getSimpleName
-
primitiveToWrapper
-
primitivesToWrappers
-
wrapperToPrimitive
-
wrappersToPrimitives
-
getAllInterfaces
-
getAllInterfaces
-
getAllSuperclasses
-
toClass
-
hierarchy
-
hierarchy
获取一个Iterable,它可以按照从子类到超类的升序遍历类层次结构.- Parameters:
type- 获取类层次结构的类型interfacesBehavior- 指示是否包含或排除接口的开关- Returns:
- 可迭代的在给定类的类层次结构上的可迭代的
-
isPrimitiveOrWrapper
-
isUserLevelMethod
-
convertClassNameToResourcePath
-
getClassVar
-
getAllFieldList
-
newInstance
获取对象的实例化- Type Parameters:
T- 泛型- Parameters:
clazz- 类- Returns:
- 实例化对象
-
getAllFieldsReadMethods
获取所有字段的 read 方法列表- Parameters:
clazz- 类信息- Returns:
- 方法列表
- Throws:
IntrospectionException- if any
-
invokeMethod
public static Object invokeMethod(Object object, String methodName) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用没有参数的命名方法.此方法将委托给
getMatchingAccessibleMethod(Class, String, Class[]).这是包装器
invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes).- Parameters:
object- 调用此对象上的方法methodName- 具有此名称的get方法- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeMethod
public static Object invokeMethod(Object object, boolean forceAccess, String methodName) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用没有参数的命名方法.此方法将委托给
getMatchingAccessibleMethod(Class, String, Class[]).这是包装器
invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes).- Parameters:
object- 调用此对象上的方法forceAccess- 强制访问调用方法,即使该方法不可访问methodName- 具有此名称的get方法- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeMethod
public static Object invokeMethod(Object object, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用其参数类型与对象类型匹配的已命名方法.此方法将委托给
getMatchingAccessibleMethod(Class, String, Class[]).这是包装器
invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes).- Parameters:
object- 调用此对象上的方法methodName- 具有此名称的get方法args- 参数信息- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeMethod
public static Object invokeMethod(Object object, boolean forceAccess, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用其参数类型与对象类型匹配的已命名方法- Parameters:
object- 调用此对象上的方法forceAccess- 强制访问调用方法,即使该方法不可访问methodName- 具有此名称的get方法args- 参数信息- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeMethod
public static Object invokeMethod(Object object, boolean forceAccess, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用其参数类型与对象类型匹配的已命名方法.- Parameters:
object- 调用此对象上的方法forceAccess- 强制访问调用方法,即使该方法不可访问methodName- 具有此名称的get方法args- 参数信息parameterTypes- 参数类型- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeMethod
public static Object invokeMethod(Object object, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用其参数类型与对象类型匹配的已命名方法.- Parameters:
object- 调用此对象上的方法methodName- 具有此名称的get方法args- 参数信息parameterTypes- 参数类型- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeExactMethod
public static Object invokeExactMethod(Object object, String methodName) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用参数类型与对象类型完全匹配的方法- Parameters:
object- 调用此对象上的方法methodName- 具有此名称的get方法- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeExactMethod
public static Object invokeExactMethod(Object object, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用没有参数的方法- Parameters:
object- 调用此对象上的方法methodName- 具有此名称的get方法args- 参数信息- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeExactMethod
public static Object invokeExactMethod(Object object, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用参数类型与给定参数类型完全匹配的方法- Parameters:
object- 调用此对象上的方法methodName- 具有此名称的get方法args- 参数信息parameterTypes- 参数类型- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeExactStaticMethod
public static Object invokeExactStaticMethod(Class<?> cls, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用参数类型与给定参数类型完全匹配的static方法- Parameters:
cls- 调用该类上的静态方法methodName- 具有此名称的get方法args- 参数信息parameterTypes- 参数类型- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeStaticMethod
public static Object invokeStaticMethod(Class<?> cls, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用一个名为static的方法,该方法的参数类型与对象类型匹配- Parameters:
cls- 调用该类上的静态方法methodName- 具有此名称的get方法args- 参数信息- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeStaticMethod
public static Object invokeStaticMethod(Class<?> cls, String methodName, Object[] args, Class<?>[] parameterTypes) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用一个名为static的方法,该方法的参数类型与对象类型匹配- Parameters:
cls- 调用该类上的静态方法methodName- 具有此名称的get方法args- 参数信息parameterTypes- 参数类型- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
invokeExactStaticMethod
public static Object invokeExactStaticMethod(Class<?> cls, String methodName, Object... args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException 调用参数类型与对象类型完全匹配的static方法- Parameters:
cls- 调用该类上的静态方法methodName- 具有此名称的get方法args- 参数信息- Returns:
- 被调用方法返回的值
- Throws:
NoSuchMethodException- 如果没有这样的可访问方法InvocationTargetException- 包装由调用的方法引发的异常IllegalAccessException- 如果请求的方法不能通过反射访问
-
getAccessibleMethod
-
getAccessibleMethod
-
getMatchingAccessibleMethod
-
getMatchingMethod
-
getMethodsWithAnnotation
public static Method[] getMethodsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取使用给定注释进行注释的给定类的所有类级公共方法.- Parameters:
cls- 要查询的ClassannotationCls- 必须在要匹配的方法上出现的Annotation- Returns:
- 方法数组.
-
getMethodsListWithAnnotation
public static List<Method> getMethodsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取使用给定注释进行注释的给定类的所有类级公共方法.- Parameters:
cls- 要查询的ClassannotationCls- 必须在要匹配的方法上出现的Annotation- Returns:
- 方法列表
-
getMethodsWithAnnotation
public static Method[] getMethodsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls, boolean searchSupers, boolean ignoreAccess) 获取使用给定注释进行注释的给定类的所有方法.- Parameters:
cls- 要查询的ClassannotationCls- 必须在要匹配的方法上出现的AnnotationsearchSupers- 确定是否应在给定类的整个继承层次结构中执行查找ignoreAccess- 确定是否应该考虑非公共方法- Returns:
- 方法数组
-
getMethodsListWithAnnotation
public static List<Method> getMethodsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls, boolean searchSupers, boolean ignoreAccess) 获取使用给定注释进行注释的给定类的所有方法.- Parameters:
cls- 要查询的ClassannotationCls- 必须在要匹配的方法上出现的AnnotationsearchSupers- 确定是否应在给定类的整个继承层次结构中执行查找ignoreAccess- 确定是否应该考虑非公共方法- Returns:
- 方法数组
-
getAnnotation
public static <A extends Annotation> A getAnnotation(Method method, Class<A> annotationCls, boolean searchSupers, boolean ignoreAccess) 获取具有给定注释类型的注释对象,该注释类型出现在给定方法上,或可选地出现在超类和接口中的任何等效方法上。如果注释类型不存在,则返回null- Type Parameters:
A- 注解类型- Parameters:
method- 要查询的Methodto queryannotationCls- 必须在要匹配的方法上出现的AnnotationsearchSupers- 确定是否应在给定类的整个继承层次结构中执行查找ignoreAccess- 确定是否应该考虑非公共方法- Returns:
- 第一个匹配注释
-
getField
-
getField
-
getDeclaredField
-
getDeclaredField
按名称获取可访问的Field,如果请求则中断作用域。只考虑指定的类- Parameters:
clazz- 被查找字段的类fieldName- 字段名forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制.false将只匹配public字段- Returns:
- 属性对象
-
getAllFields
-
getAllFieldsList
-
getFieldsWithAnnotation
public static Field[] getFieldsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取用给定注释注释的给定类及其父类的所有字段(如果有).- Parameters:
cls- 要查询的ClassannotationCls- 必须在要匹配的方法上出现的Annotation- Returns:
- 字段数组(可能为空)
-
getFieldsListWithAnnotation
public static List<Field> getFieldsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) 获取用给定注释注释的给定类及其父类的所有字段(如果有).- Parameters:
cls- 要查询的ClassannotationCls- 必须在要匹配的方法上出现的Annotation- Returns:
- 字段列表(可能为空).
-
readStaticField
读取可访问的staticField.- Parameters:
field- 字段信息- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readStaticField
public static Object readStaticField(Field field, boolean forceAccess) throws IllegalAccessException 读取一个静态Field.- Parameters:
field- 字段信息forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readStaticField
读取指定的public staticField。将考虑超类.- Parameters:
cls- 要反映的Class不能是nullfieldName- 要获取的字段名- Returns:
- 字段的值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readStaticField
public static Object readStaticField(Class<?> cls, String fieldName, boolean forceAccess) throws IllegalAccessException 读取指定的staticField,将考虑超类- Parameters:
cls- 要反映的Class不能是nullfieldName- 要获取的字段名forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制.false将只匹配public字段- Returns:
- 字段对象
- Throws:
IllegalAccessException- 如果字段不可访问
-
readDeclaredStaticField
public static Object readDeclaredStaticField(Class<?> cls, String fieldName) throws IllegalAccessException - Parameters:
cls- 要反映的Class不能是nullfieldName- 要获取的字段名- Returns:
- 字段的值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readDeclaredStaticField
public static Object readDeclaredStaticField(Class<?> cls, String fieldName, boolean forceAccess) throws IllegalAccessException - Parameters:
cls- 要反映的Class不能是nullfieldName- 要获取的字段名forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制.false将只匹配public字段- Returns:
- 字段对象
- Throws:
IllegalAccessException- 如果字段不可访问
-
readField
读取一个可访问的Field.- Parameters:
field- 要使用的字段target- 要调用的对象可以是null,用于static字段- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readField
public static Object readField(Field field, Object target, boolean forceAccess) throws IllegalAccessException 读取一个可访问的Field.- Parameters:
field- 要使用的字段target- 要调用的对象可以是null,用于static字段forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制.- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readField
Reads the namedpublicField. Superclasses will be considered.- Parameters:
target- target 要调用的对象可以是null,用于static字段fieldName- 要获取的字段名- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readField
public static Object readField(Object target, String fieldName, boolean forceAccess) throws IllegalAccessException 读取指定的Field将考虑超类.- Parameters:
target- target 要调用的对象可以是null,用于static字段fieldName- 要获取的字段名forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制.false将只匹配public字段- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readDeclaredField
public static Object readDeclaredField(Object target, String fieldName) throws IllegalAccessException 读取指定的publicField只考虑指定对象的类.- Parameters:
target- target 要调用的对象可以是null,用于static字段fieldName- 要获取的字段名- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
readDeclaredField
public static Object readDeclaredField(Object target, String fieldName, boolean forceAccess) throws IllegalAccessException 按名称获取Field值 只考虑指定对象的类.- Parameters:
target- target 要调用的对象可以是null,用于static字段fieldName- 要获取的字段名forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制.false将只匹配public字段- Returns:
- 字段值
- Throws:
IllegalAccessException- 如果字段不可访问
-
writeStaticField
写一个public staticField.- Parameters:
field- 字段value- 值- Throws:
IllegalAccessException- 如果字段不是public或final
-
writeStaticField
public static void writeStaticField(Field field, Object value, boolean forceAccess) throws IllegalAccessException 写一个静态方法Field.- Parameters:
field- 字段value- 值forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制false将只匹配public字段- Throws:
IllegalAccessException- 如果字段不是public或final
-
writeStaticField
public static void writeStaticField(Class<?> cls, String fieldName, Object value) throws IllegalAccessException 写一个命名public staticField将考虑超类- Parameters:
cls- 查找的类ClassfieldName- 字段名value- 值- Throws:
IllegalAccessException- 如果字段不是public或final
-
writeStaticField
public static void writeStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException 写一个命名的staticField将考虑超类.- Parameters:
cls- 查找的类ClassfieldName- 字段名value- 值forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制false将只匹配public字段- Throws:
IllegalAccessException- 如果字段不是public或final
-
writeDeclaredStaticField
public static void writeDeclaredStaticField(Class<?> cls, String fieldName, Object value) throws IllegalAccessException 写一个命名public staticField只考虑指定的类.- Parameters:
cls- 查找的类ClassfieldName- 字段名value- 值- Throws:
IllegalAccessException- 如果字段不是public或final
-
writeDeclaredStaticField
public static void writeDeclaredStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException 写一个命名的staticField只考虑指定的类。- Parameters:
cls- 查找的类ClassfieldName- 字段名value- 值forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制false将只匹配public字段.- Throws:
IllegalAccessException- 如果字段不是public或final
-
writeField
public static void writeField(Field field, Object target, Object value) throws IllegalAccessException 写一个可访问的Field.- Parameters:
field- 字段target- 要调用的对象可以是null,用于static字段value- 值- Throws:
IllegalAccessException- 如果字段或目标是null,那么该字段是不可访问的, 或者是final,或者value是不可分配的
-
writeField
public static void writeField(Field field, Object target, Object value, boolean forceAccess) throws IllegalAccessException 写一个可访问的Field.- Parameters:
field- 字段target- 要调用的对象可以是null,用于static字段value- 值forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制false将只匹配public字段- Throws:
IllegalAccessException- 如果字段不可访问或final
-
removeFinalModifier
移除修饰符Field.- Parameters:
field- 删除最后的修改器- Throws:
IllegalArgumentException- 如果字段是null
-
removeFinalModifier
移除修饰符Field.- Parameters:
field- 字段属性forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制false将只匹配public字段.- Throws:
IllegalArgumentException- 如果字段是null
-
writeField
public static void writeField(Object target, String fieldName, Object value) throws IllegalAccessException 处理publicField将考虑超类- Parameters:
target- 目标对象不能是nullfieldName- 要获取的字段名value- 值信息- Throws:
IllegalAccessException- 如果字段不可访问
-
writeField
public static void writeField(Object target, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException 处理publicField将考虑超类.- Parameters:
target- 目标对象不能是nullfieldName- 要获取的字段名value- 值信息forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制false将只匹配public字段.- Throws:
IllegalAccessException- 如果字段不可访问
-
writeDeclaredField
public static void writeDeclaredField(Object target, String fieldName, Object value) throws IllegalAccessException 写一个publicField只考虑指定的类.- Parameters:
target- 目标对象不能是nullfieldName- 要获取的字段名value- 值信息- Throws:
IllegalAccessException- 如果字段不可访问
-
writeDeclaredField
public static void writeDeclaredField(Object target, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException 处理publicField只考虑指定的类.- Parameters:
target- 目标对象不能是nullfieldName- 要获取的字段名value- 值信息forceAccess- 是否使用AccessibleObject.setAccessible(boolean)方法打破范围限制false将只匹配public字段.- Throws:
IllegalAccessException- 如果字段不可访问
-
getUserClass
-
getUserClass
-
isNumberOrStringType
判断这个字段是否是数字类型或字符串类型- Parameters:
type- 字段类型- Returns:
- true:是数字或字符串类型
-
setAccessibleWorkaround
默认访问超类的解决方法- Parameters:
accessibleObject- AccessibleObject设置为可访问- Returns:
- 指示对象的可访问性是否设置为true的布尔值
-
isPackageAccess
public static boolean isPackageAccess(int modifiers) 返回给定的一组修饰符是否允许程序包访问- Parameters:
modifiers- to test- Returns:
- 除非检测到
package/protected/private修饰符,否则true
-
isAccessible
-
compareConstructorFit
public static int compareConstructorFit(Constructor<?> left, Constructor<?> right, Class<?>[] actual) 根据两个构造函数与一组运行时参数类型的匹配程度进行比较 从而使比较结果按顺序排序的列表首先返回最佳匹配(最低)- Parameters:
left- 左构造函数right- 右构造函数actual- 运行时参数类型以匹配* *left/right- Returns:
- 与
compare语义一致的int
-
compareMethodFit
-
compareParameterTypes
public static int compareParameterTypes(org.aoju.bus.core.toolkit.ClassKit.Executable left, org.aoju.bus.core.toolkit.ClassKit.Executable right, Class<?>[] actual) 根据两个可执行文件与一组运行时参数类型的匹配程度来比较两个可执行文件的相对适合度 以便按比较结果排序的列表将首先返回最佳匹配项- Parameters:
left- 左可执行文件right- 右可执行文件actual- 运行时参数类型以匹配left/right- Returns:
- 与
compare语义一致的int
-
getTotalTransformationCost
public static float getTotalTransformationCost(Class<?>[] srcArgs, org.aoju.bus.core.toolkit.ClassKit.Executable executable) 返回source参数列表中每个类的对象转换成本之和- Parameters:
srcArgs- 源参数executable- 执行文件以计算转换成本- Returns:
- 总转换成本
-
getObjectTransformationCost
-
getPrimitivePromotionCost
-
isMatchingMethod
-
isMatchingConstructor
-
isMatchingExecutable
public static boolean isMatchingExecutable(org.aoju.bus.core.toolkit.ClassKit.Executable method, Class<?>[] parameterTypes) -
isCglibProxy
验证类是否是cglib代理对象- Parameters:
object- the object to check- Returns:
- true为是代理对象
-
isCglibProxyClass
验证类是否是cglib生成类- Parameters:
clazz- the class to check- Returns:
- true为是代理类
-
isCglibProxyClassName
验证类名是否为cglib代理类名- Parameters:
className- the class name to check- Returns:
- true为是代理类
-
getCglibActualClass
-
loadFirstAvailable
加载第一个可用服务,如果用户定义了多个接口实现类,只获取第一个不报错的服务。- Type Parameters:
T- 接口类型- Parameters:
clazz- 服务接口- Returns:
- 第一个服务接口实现对象,无实现返回
null
-
loadFirst
加载第一个服务,如果用户定义了多个接口实现类,只获取第一个- Type Parameters:
T- 接口类型- Parameters:
clazz- 服务接口- Returns:
- 第一个服务接口实现对象,无实现返回
null
-
load
加载服务- Type Parameters:
T- 接口类型- Parameters:
clazz- 服务接口- Returns:
- 服务接口实现列表
-
load
加载服务- Type Parameters:
T- 接口类型- Parameters:
clazz- 服务接口loader-ClassLoader- Returns:
- 服务接口实现列表
-
loadList
-
loadList
加载服务 并已list列表返回- Type Parameters:
T- 接口类型- Parameters:
clazz- 服务接口loader-ClassLoader- Returns:
- 服务接口实现列表
-
getManifest
-
getManifest
获取 jar 包文件或项目目录下的 Manifest- Parameters:
classpathItem- 文件路径- Returns:
- Manifest
- Throws:
InternalException- IO异常
-
getManifest
根据JarURLConnection获取 jar 包文件的 Manifest- Parameters:
connection-JarURLConnection- Returns:
- Manifest
- Throws:
InternalException- IO异常
-
getManifest
根据JarURLConnection获取 jar 包文件的 Manifest- Parameters:
jarFile-JarURLConnection- Returns:
- Manifest
- Throws:
InternalException- IO异常
-
compile
编译指定的源码文件- Parameters:
sourceFiles- 源码文件路径- Returns:
- 0表示成功,否则其他
-
getFileManager
- Returns:
StandardJavaFileManager
-
getFileManager
public static StandardJavaFileManager getFileManager(DiagnosticListener<? super JavaFileObject> diagnosticListener) - Parameters:
diagnosticListener- 异常收集器- Returns:
StandardJavaFileManager
-
getTask
public static JavaCompiler.CompilationTask getTask(JavaFileManager fileManager, DiagnosticListener<? super JavaFileObject> diagnosticListener, Iterable<String> options, Iterable<? extends JavaFileObject> compilationUnits) 新建编译任务- Parameters:
fileManager-JavaFileManager,用于管理已经编译好的文件diagnosticListener- 诊断监听options- 选项,例如 -cpXXX等compilationUnits- 编译单元,即需要编译的对象- Returns:
JavaCompiler.CompilationTask
-
getLocation
-
getLocationPath
-
isAbstractOrInterface
是否为抽象类或接口- Parameters:
clazz- 类- Returns:
- 是否为抽象类或接口
-
isJdkClass
是否为JDK中定义的类或接口,判断依据:1、以java.、javax.开头的包名 2、ClassLoader为null
- Parameters:
clazz- 被检查的类- Returns:
- 是否为JDK中定义的类或接口
-
getAttributes
获取指定容器环境的对象的属性 如获取DNS属性,则URI为类似:dns:aoju.org- Parameters:
uri- URI字符串,格式为[scheme:][name]/[domain]attrIds- 需要获取的属性ID名称- Returns:
Attributes
-
createInitialDirContext
- Parameters:
environment- 环境参数,{code null}表示无参数- Returns:
InitialDirContext
-
createInitialContext
- Parameters:
environment- 环境参数,{code null}表示无参数- Returns:
InitialContext
-
isInterface
-