类 ClassUtils

java.lang.Object
com.alibaba.ageiport.common.utils.ClassUtils

public class ClassUtils extends Object
类工具类
作者:
xuechao.sxc
  • 字段详细资料

  • 构造器详细资料

    • ClassUtils

      public ClassUtils()
  • 方法详细资料

    • classForName

      public static Class<?> classForName(String className) throws ClassNotFoundException
      抛出:
      ClassNotFoundException
    • getClass

      public static <T> Class<T> getClass(T obj)
      null安全的获取对象类型
      类型参数:
      T - 对象类型
      返回:
      对象类型,提供对象如果为null 返回null
    • getEnclosingClass

      public static Class<?> getEnclosingClass(Class<?> clazz)
      获得外围类
      返回定义此类或匿名类所在的类,如果类本身是在包中定义的,返回null
      参数:
      clazz - 类
      返回:
      外围类
    • isTopLevelClass

      public static boolean isTopLevelClass(Class<?> clazz)
      是否为顶层类,即定义在包中的类,而非定义在类中的内部类
      参数:
      clazz - 类
      返回:
      是否为顶层类
    • getClassName

      public static String getClassName(Object obj, boolean isSimple)
      获取类名
      参数:
      obj - 获取类名对象
      isSimple - 是否简单类名,如果为true,返回不带包名的类名
      返回:
      类名
    • getClassName

      public static String getClassName(Class<?> clazz, boolean isSimple)
      获取类名
      类名并不包含“.class”这个扩展名
      例如:ClassUtil这个类
      参数:
      clazz - 类
      isSimple - 是否简单类名,如果为true,返回不带包名的类名
      返回:
      类名
    • getSimpleClassName

      public static String getSimpleClassName(String qualifiedName)
      get simple class name from qualified class name
    • getClasses

      public static Class<?>[] getClasses(Object... objects)
      获得对象数组的类数组
      参数:
      objects - 对象数组,如果数组中存在null元素,则此元素被认为是Object类型
      返回:
      类数组
    • getPublicMethodNames

      public static Set<String> getPublicMethodNames(Class<?> clazz)
      获得指定类中的Public方法名
      去重重载的方法
      参数:
      clazz - 类
      返回:
      方法名Set
    • getPublicMethods

      public static Method[] getPublicMethods(Class<?> clazz)
      获得本类及其父类所有Public方法
      参数:
      clazz - 查找方法的类
      返回:
      过滤后的方法列表
    • getPublicMethods

      public static List<Method> getPublicMethods(Class<?> clazz, Filter<Method> filter)
      获得指定类过滤后的Public方法列表
      参数:
      clazz - 查找方法的类
      filter - 过滤器
      返回:
      过滤后的方法列表
    • getPublicMethods

      public static List<Method> getPublicMethods(Class<?> clazz, Method... excludeMethods)
      获得指定类过滤后的Public方法列表
      参数:
      clazz - 查找方法的类
      excludeMethods - 不包括的方法
      返回:
      过滤后的方法列表
    • getPublicMethods

      public static List<Method> getPublicMethods(Class<?> clazz, String... excludeMethodNames)
      获得指定类过滤后的Public方法列表
      参数:
      clazz - 查找方法的类
      excludeMethodNames - 不包括的方法名列表
      返回:
      过滤后的方法列表
    • getPublicMethod

      public static Method getPublicMethod(Class<?> clazz, String methodName, Class<?>... paramTypes)
      查找指定Public方法 如果找不到对应的方法或方法不为public的则返回null
      参数:
      clazz - 类
      methodName - 方法名
      paramTypes - 参数类型
      返回:
      方法
      抛出:
      SecurityException - 无权访问抛出异常
    • getDeclaredMethodNames

      public static Set<String> getDeclaredMethodNames(Class<?> clazz)
      获得指定类中的Public方法名
      去重重载的方法
      参数:
      clazz - 类
      返回:
      方法名Set
    • getDeclaredMethods

      public static Method[] getDeclaredMethods(Class<?> clazz)
      获得声明的所有方法,包括本类及其父类和接口的所有方法和Object类的方法
      参数:
      clazz - 类
      返回:
      方法数组
    • getDeclaredMethodOfObj

      public static Method getDeclaredMethodOfObj(Object obj, String methodName, Object... args)
      查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法
      参数:
      obj - 被查找的对象
      methodName - 方法名
      args - 参数
      返回:
      方法
      抛出:
      SecurityException - 无访问权限抛出异常
    • getDeclaredMethod

      public static Method getDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes)
      查找指定类中的所有方法(包括非public方法),也包括父类和Object类的方法 找不到方法会返回null
      参数:
      clazz - 被查找的类
      methodName - 方法名
      parameterTypes - 参数类型
      返回:
      方法
      抛出:
      SecurityException - 无访问权限抛出异常
    • getDeclaredField

      public static Field getDeclaredField(Class<?> clazz, String fieldName)
      查找指定类中的所有字段(包括非public字段), 字段不存在则返回null
      参数:
      clazz - 被查找字段的类
      fieldName - 字段名
      返回:
      字段
      抛出:
      SecurityException - 安全异常
    • getDeclaredFields

      public static Field[] getDeclaredFields(Class<?> clazz)
      查找指定类中的所有字段(包括非public字段)
      参数:
      clazz - 被查找字段的类
      返回:
      字段
      抛出:
      SecurityException - 安全异常
    • isAllAssignableFrom

      public static boolean isAllAssignableFrom(Class<?>[] types1, Class<?>[] types2)
      比较判断types1和types2两组类,如果types1中所有的类都与types2对应位置的类相同,或者是其父类或接口,则返回true
      参数:
      types1 - 类组1
      types2 - 类组2
      返回:
      是否相同、父类或接口
    • isPrimitiveWrapper

      public static boolean isPrimitiveWrapper(Class<?> clazz)
      是否为包装类型
      参数:
      clazz - 类
      返回:
      是否为包装类型
    • isBasicType

      public static boolean isBasicType(Class<?> clazz)
      是否为基本类型(包括包装类和原始类)
      参数:
      clazz - 类
      返回:
      是否为基本类型
    • isSimpleTypeOrArray

      public static boolean isSimpleTypeOrArray(Class<?> clazz)
      是否简单值类型或简单值类型的数组
      包括:原始类型,、String、other CharSequence, a Number, a Date, a URI, a URL, a Locale or a Class及其数组
      参数:
      clazz - 属性类
      返回:
      是否简单值类型或简单值类型的数组
    • isSimpleValueType

      public static boolean isSimpleValueType(Class<?> clazz)
      是否为简单值类型
      包括:
           原始类型
           String、other CharSequence
           Number
           Date
           URI
           URL
           Locale
           Class
       
      参数:
      clazz - 类
      返回:
      是否为简单值类型
    • isAssignable

      public static boolean isAssignable(Class<?> targetType, Class<?> sourceType)
      检查目标类是否可以从原类转化
      转化包括:
      1、原类是对象,目标类型是原类型实现的接口
      2、目标类型是原类型的父类
      3、两者是原始类型或者包装类型(相互转换)
      参数:
      targetType - 目标类型
      sourceType - 原类型
      返回:
      是否可转化
    • isPublic

      public static boolean isPublic(Class<?> clazz)
      指定类是否为Public
      参数:
      clazz - 类
      返回:
      是否为public
    • isPublic

      public static boolean isPublic(Method method)
      指定方法是否为Public
      参数:
      method - 方法
      返回:
      是否为public
    • isNotPublic

      public static boolean isNotPublic(Class<?> clazz)
      指定类是否为非public
      参数:
      clazz - 类
      返回:
      是否为非public
    • isNotPublic

      public static boolean isNotPublic(Method method)
      指定方法是否为非public
      参数:
      method - 方法
      返回:
      是否为非public
    • isStatic

      public static boolean isStatic(Method method)
      是否为静态方法
      参数:
      method - 方法
      返回:
      是否为静态方法
    • setAccessible

      public static Method setAccessible(Method method)
      设置方法为可访问
      参数:
      method - 方法
      返回:
      方法
    • isAbstract

      public static boolean isAbstract(Class<?> clazz)
      是否为抽象类
      参数:
      clazz - 类
      返回:
      是否为抽象类
    • isNormalClass

      public static boolean isNormalClass(Class<?> clazz)
      是否为标准的类
      这个类必须:
       1、非接口
       2、非抽象类
       3、非Enum枚举
       4、非数组
       5、非注解
       6、非原始类型(int, long等)
       
      参数:
      clazz - 类
      返回:
      是否为标准类
    • isEnum

      public static boolean isEnum(Class<?> clazz)
      判断类是否为枚举类型
      参数:
      clazz - 类
      返回:
      是否为枚举类型
    • getTypeArgument

      public static Class<?> getTypeArgument(Class<?> clazz)
      获得给定类的第一个泛型参数
      参数:
      clazz - 被检查的类,必须是已经确定泛型类型的类
      返回:
      Class
    • getTypeArgument

      public static Class<?> getTypeArgument(Class<?> clazz, int index)
      获得给定类的泛型参数
      参数:
      clazz - 被检查的类,必须是已经确定泛型类型的类
      index - 泛型类型的索引号,即第几个泛型类型
      返回:
      Class
    • getPackage

      public static String getPackage(Class<?> clazz)
      获得给定类所在包的名称
      例如:
      参数:
      clazz - 类
      返回:
      包名
    • isJavaLanguageInterface

      public static boolean isJavaLanguageInterface(Class<?> ifc)
      Determine whether the given interface is a common Java language interface: Serializable, Externalizable, Closeable, AutoCloseable, Cloneable, Comparable - all of which can be ignored when looking for 'primary' user-level interfaces. Common characteristics: no service-level operations, no bean property methods, no default methods.
      参数:
      ifc - the interface to check
      从以下版本开始:
      5.0.3
    • getDefaultValue

      public static Object getDefaultValue(Class<?> clazz)
      获取指定类型分的默认值
      默认值规则为:
       1、如果为原始类型,返回0
       2、非原始类型返回null
       
      参数:
      clazz - 类
      返回:
      默认值
    • getDefaultValues

      public static Object[] getDefaultValues(Class<?>... classes)
      获得默认值列表
      参数:
      classes - 值类型
      返回:
      默认值列表
    • getCallerClassLoader

      public static ClassLoader getCallerClassLoader(Class<?> caller)
    • getClassLoader

      public static ClassLoader getClassLoader(Class<?> clazz)
      get class loader
      参数:
      clazz -
      返回:
      class loader
    • getClassLoader

      public static ClassLoader getClassLoader()
      Return the default ClassLoader to use: typically the thread context ClassLoader, if available; the ClassLoader that loaded the ClassUtils class will be used as fallback.

      Call this method if you intend to use the thread context ClassLoader in a scenario where you absolutely need a non-null ClassLoader reference: for example, for class path resource loading (but not necessarily for Class.forName, which accepts a null ClassLoader reference as well).

      返回:
      the default ClassLoader (never null)
      另请参阅:
    • forName

      public static Class<?> forName(String name) throws ClassNotFoundException
      Same as Class.forName(), except that it works for primitive types.
      抛出:
      ClassNotFoundException
    • forNameWithCallerClassLoader

      public static Class<?> forNameWithCallerClassLoader(String name, Class<?> caller) throws ClassNotFoundException
      抛出:
      ClassNotFoundException
    • forName

      public static Class<?> forName(String[] packages, String className)
    • forName

      public static Class<?> forName(String name, ClassLoader classLoader) throws ClassNotFoundException, LinkageError
      Replacement for Class.forName() that also returns Class instances for primitives (like "int") and array class names (like "String[]").
      参数:
      name - the name of the Class
      classLoader - the class loader to use (may be null, which indicates the default class loader)
      返回:
      Class instance for the supplied name
      抛出:
      ClassNotFoundException - if the class was not found
      LinkageError - if the class file could not be loaded
      另请参阅:
    • resolvePrimitiveClassName

      public static Class<?> resolvePrimitiveClassName(String name)
      Resolve the given class name as primitive class, if appropriate, according to the JVM's naming rules for primitive classes.

      Also supports the JVM's internal class names for primitive arrays. Does not support the "[]" suffix notation for primitive arrays; this is only supported by forName(java.lang.String).

      参数:
      name - the name of the potentially primitive class
      返回:
      the primitive class, or null if the name does not denote a primitive class or primitive array class
    • toURI

      public static URI toURI(String name)
    • toString

      public static String toString(Throwable e)