java classutils_关于apache的common-lang实现ClassUtils工具类对获取Class类的简称、包名及父类集合、类转换、获取依赖关系类集等操作...

一、前言

在apache的commons-lang开源包中org.apache.commons.lang3.ClassUtils类工具类,对类的简称getShortClassName或getSimpleName、获取所在包名称getPackageName、获取所有父亲类集合getAllSuperclasses、获取所有接口getAllInterfaces、字符串集合到类集合转换convertClassNamesToClasses、是否原始类判断isPrimitiveOrWrapper、是否内部类判断isInnerClass、通过类加载器获取class对象getClass、获取Public方法getPublicMethod、获取依赖集hierarchy等操作方法。

二、源码说明

1.ClassUtilspackage org.apache.commons.lang3;@b@@b@import java.lang.reflect.Method;@b@import java.lang.reflect.Modifier;@b@import java.util.ArrayList;@b@import java.util.Collections;@b@import java.util.HashMap;@b@import java.util.HashSet;@b@import java.util.Iterator;@b@import java.util.LinkedHashSet;@b@import java.util.List;@b@import java.util.Map;@b@import java.util.Map.Entry;@b@import java.util.Set;@b@import org.apache.commons.lang3.mutable.MutableObject;@b@@b@public class ClassUtils@b@{@b@  public static final char PACKAGE_SEPARATOR_CHAR = 46;@b@  public static final String PACKAGE_SEPARATOR = String.valueOf('.');@b@  public static final char INNER_CLASS_SEPARATOR_CHAR = 36;@b@  public static final String INNER_CLASS_SEPARATOR = String.valueOf('$');@b@  private static final Map, Class>> primitiveWrapperMap = new HashMap();@b@  private static final Map, Class>> wrapperPrimitiveMap;@b@  private static final Map abbreviationMap;@b@  private static final Map reverseAbbreviationMap;@b@@b@  public static String getShortClassName(Object object, String valueIfNull)@b@  {@b@    if (object == null)@b@      return valueIfNull;@b@@b@    return getShortClassName(object.getClass());@b@  }@b@@b@  public static String getShortClassName(Class> cls)@b@  {@b@    if (cls == null)@b@      return "";@b@@b@    return getShortClassName(cls.getName());@b@  }@b@@b@  public static String getShortClassName(String className)@b@  {@b@    if (StringUtils.isEmpty(className)) {@b@      return "";@b@    }@b@@b@    StringBuilder arrayPrefix = new StringBuilder();@b@@b@    if (className.startsWith("[")) {@b@      while (className.charAt(0) == '[') {@b@        className = className.substring(1);@b@        arrayPrefix.append("[]");@b@      }@b@@b@      if ((className.charAt(0) == 'L') && (className.charAt(className.length() - 1) == ';')) {@b@        className = className.substring(1, className.length() - 1);@b@      }@b@@b@      if (reverseAbbreviationMap.containsKey(className))@b@        className = (String)reverseAbbreviationMap.get(className);@b@@b@    }@b@@b@    int lastDotIdx = className.lastIndexOf(46);@b@    int innerIdx = className.indexOf(36, (lastDotIdx == -1) ? 0 : lastDotIdx + 1);@b@@b@    String out = className.substring(lastDotIdx + 1);@b@    if (innerIdx != -1)@b@      out = out.replace('$', '.');@b@@b@    return new StringBuilder().append(out).append(arrayPrefix).toString();@b@  }@b@@b@  public static String getSimpleName(Class> cls)@b@  {@b@    if (cls == null)@b@      return "";@b@@b@    return cls.getSimpleName();@b@  }@b@@b@  public static String getSimpleName(Object object, String valueIfNull)@b@  {@b@    if (object == null)@b@      return valueIfNull;@b@@b@    return getSimpleName(object.getClass());@b@  }@b@@b@  public static String getPackageName(Object object, String valueIfNull)@b@  {@b@    if (object == null)@b@      return valueIfNull;@b@@b@    return getPackageName(object.getClass());@b@  }@b@@b@  public static String getPackageName(Class> cls)@b@  {@b@    if (cls == null)@b@      return "";@b@@b@    return getPackageName(cls.getName());@b@  }@b@@b@  public static String getPackageName(String className)@b@  {@b@    if (StringUtils.isEmpty(className)) {@b@      return "";@b@    }@b@@b@    while (className.charAt(0) == '[') {@b@      className = className.substring(1);@b@    }@b@@b@    if ((className.charAt(0) == 'L') && (className.charAt(className.length() - 1) == ';')) {@b@      className = className.substring(1);@b@    }@b@@b@    int i = className.lastIndexOf(46);@b@    if (i == -1)@b@      return "";@b@@b@    return className.substring(0, i);@b@  }@b@@b@  public static List> getAllSuperclasses(Class> cls)@b@  {@b@    if (cls == null)@b@      return null;@b@@b@    List classes = new ArrayList();@b@    Class superclass = cls.getSuperclass();@b@    while (superclass != null) {@b@      classes.add(superclass);@b@      superclass = superclass.getSuperclass();@b@    }@b@    return classes;@b@  }@b@@b@  public static List> getAllInterfaces(Class> cls)@b@  {@b@    if (cls == null) {@b@      return null;@b@    }@b@@b@    LinkedHashSet interfacesFound = new LinkedHashSet();@b@    getAllInterfaces(cls, interfacesFound);@b@@b@    return new ArrayList(interfacesFound);@b@  }@b@@b@  private static void getAllInterfaces(Class> cls, HashSet> interfacesFound)@b@  {@b@    while (cls != null) {@b@      Class[] interfaces = cls.getInterfaces();@b@@b@      Class[] arr$ = interfaces; int len$ = arr$.length; for (int i$ = 0; i$ > convertClassNamesToClasses(List classNames)@b@  {@b@    if (classNames == null)@b@      return null;@b@@b@    List classes = new ArrayList(classNames.size());@b@    for (String className : classNames)@b@      try {@b@        classes.add(Class.forName(className));@b@      } catch (Exception ex) {@b@        classes.add(null);@b@      }@b@@b@    return classes;@b@  }@b@@b@  public static List convertClassesToClassNames(List> classes)@b@  {@b@    if (classes == null)@b@      return null;@b@@b@    List classNames = new ArrayList(classes.size());@b@    for (Class cls : classes)@b@      if (cls == null)@b@        classNames.add(null);@b@      else@b@        classNames.add(cls.getName());@b@@b@@b@    return classNames;@b@  }@b@@b@  public static boolean isAssignable(Class>[] classArray, Class>[] toClassArray)@b@  {@b@    return isAssignable(classArray, toClassArray, SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_5));@b@  }@b@@b@  public static boolean isAssignable(Class>[] classArray, Class>[] toClassArray, boolean autoboxing)@b@  {@b@    if (!(ArrayUtils.isSameLength(classArray, toClassArray)))@b@      return false;@b@@b@    if (classArray == null)@b@      classArray = ArrayUtils.EMPTY_CLASS_ARRAY;@b@@b@    if (toClassArray == null)@b@      toClassArray = ArrayUtils.EMPTY_CLASS_ARRAY;@b@@b@    for (int i = 0; i  type)@b@  {@b@    if (type == null)@b@      return false;@b@@b@    return ((type.isPrimitive()) || (isPrimitiveWrapper(type)));@b@  }@b@@b@  public static boolean isPrimitiveWrapper(Class> type)@b@  {@b@    return wrapperPrimitiveMap.containsKey(type);@b@  }@b@@b@  public static boolean isAssignable(Class> cls, Class> toClass)@b@  {@b@    return isAssignable(cls, toClass, SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_5));@b@  }@b@@b@  public static boolean isAssignable(Class> cls, Class> toClass, boolean autoboxing)@b@  {@b@    if (toClass == null) {@b@      return false;@b@    }@b@@b@    if (cls == null) {@b@      return (!(toClass.isPrimitive()));@b@    }@b@@b@    if (autoboxing) {@b@      if ((cls.isPrimitive()) && (!(toClass.isPrimitive()))) {@b@        cls = primitiveToWrapper(cls);@b@        if (cls == null)@b@          return false;@b@      }@b@@b@      if ((toClass.isPrimitive()) && (!(cls.isPrimitive()))) {@b@        cls = wrapperToPrimitive(cls);@b@        if (cls == null)@b@          return false;@b@      }@b@    }@b@@b@    if (cls.equals(toClass))@b@      return true;@b@@b@    if (cls.isPrimitive()) {@b@      if (!(toClass.isPrimitive()))@b@        return false;@b@@b@      if (Integer.TYPE.equals(cls)) {@b@        return ((Long.TYPE.equals(toClass)) || (Float.TYPE.equals(toClass)) || (Double.TYPE.equals(toClass)));@b@      }@b@@b@      if (Long.TYPE.equals(cls)) {@b@        return ((Float.TYPE.equals(toClass)) || (Double.TYPE.equals(toClass)));@b@      }@b@@b@      if (Boolean.TYPE.equals(cls))@b@        return false;@b@@b@      if (Double.TYPE.equals(cls))@b@        return false;@b@@b@      if (Float.TYPE.equals(cls))@b@        return Double.TYPE.equals(toClass);@b@@b@      if (Character.TYPE.equals(cls)) {@b@        return ((Integer.TYPE.equals(toClass)) || (Long.TYPE.equals(toClass)) || (Float.TYPE.equals(toClass)) || (Double.TYPE.equals(toClass)));@b@      }@b@@b@      if (Short.TYPE.equals(cls)) {@b@        return ((Integer.TYPE.equals(toClass)) || (Long.TYPE.equals(toClass)) || (Float.TYPE.equals(toClass)) || (Double.TYPE.equals(toClass)));@b@      }@b@@b@      if (Byte.TYPE.equals(cls)) {@b@        return ((Short.TYPE.equals(toClass)) || (Integer.TYPE.equals(toClass)) || (Long.TYPE.equals(toClass)) || (Float.TYPE.equals(toClass)) || (Double.TYPE.equals(toClass)));@b@      }@b@@b@      return false;@b@    }@b@    return toClass.isAssignableFrom(cls);@b@  }@b@@b@  public static Class> primitiveToWrapper(Class> cls)@b@  {@b@    Class convertedClass = cls;@b@    if ((cls != null) && (cls.isPrimitive()))@b@      convertedClass = (Class)primitiveWrapperMap.get(cls);@b@@b@    return convertedClass;@b@  }@b@@b@  public static Class>[] primitivesToWrappers(Class>[] classes)@b@  {@b@    if (classes == null) {@b@      return null;@b@    }@b@@b@    if (classes.length == 0) {@b@      return classes;@b@    }@b@@b@    Class[] convertedClasses = new Class[classes.length];@b@    for (int i = 0; i  wrapperToPrimitive(Class> cls)@b@  {@b@    return ((Class)wrapperPrimitiveMap.get(cls));@b@  }@b@@b@  public static Class>[] wrappersToPrimitives(Class>[] classes)@b@  {@b@    if (classes == null) {@b@      return null;@b@    }@b@@b@    if (classes.length == 0) {@b@      return classes;@b@    }@b@@b@    Class[] convertedClasses = new Class[classes.length];@b@    for (int i = 0; i  cls)@b@  {@b@    return ((cls != null) && (cls.getEnclosingClass() != null));@b@  }@b@@b@  public static Class> getClass(ClassLoader classLoader, String className, boolean initialize)@b@    throws ClassNotFoundException@b@  {@b@    try@b@    {@b@      Class clazz;@b@      if (abbreviationMap.containsKey(className)) {@b@        String clsName = new StringBuilder().append("[").append((String)abbreviationMap.get(className)).toString();@b@        clazz = Class.forName(clsName, initialize, classLoader).getComponentType();@b@      } else {@b@        clazz = Class.forName(toCanonicalName(className), initialize, classLoader);@b@      }@b@      return clazz;@b@    }@b@    catch (ClassNotFoundException ex) {@b@      int lastDotIndex = className.lastIndexOf(46);@b@@b@      if (lastDotIndex != -1);@b@      try {@b@        return getClass(classLoader, new StringBuilder().append(className.substring(0, lastDotIndex)).append('$').append(className.substring(lastDotIndex + 1)).toString(), initialize);@b@      }@b@      catch (ClassNotFoundException ex2)@b@      {@b@        throw ex;@b@      }@b@    }@b@  }@b@@b@  public static Class> getClass(ClassLoader classLoader, String className)@b@    throws ClassNotFoundException@b@  {@b@    return getClass(classLoader, className, true);@b@  }@b@@b@  public static Class> getClass(String className)@b@    throws ClassNotFoundException@b@  {@b@    return getClass(className, true);@b@  }@b@@b@  public static Class> getClass(String className, boolean initialize)@b@    throws ClassNotFoundException@b@  {@b@    ClassLoader contextCL = Thread.currentThread().getContextClassLoader();@b@    ClassLoader loader = (contextCL == null) ? ClassUtils.class.getClassLoader() : contextCL;@b@    return getClass(loader, className, initialize);@b@  }@b@@b@  public static Method getPublicMethod(Class> cls, String methodName, Class>[] parameterTypes)@b@    throws SecurityException, NoSuchMethodException@b@  {@b@    Method declaredMethod = cls.getMethod(methodName, parameterTypes);@b@    if (Modifier.isPublic(declaredMethod.getDeclaringClass().getModifiers())) {@b@      return declaredMethod;@b@    }@b@@b@    List candidateClasses = new ArrayList();@b@    candidateClasses.addAll(getAllInterfaces(cls));@b@    candidateClasses.addAll(getAllSuperclasses(cls));@b@@b@    Iterator i$ = candidateClasses.iterator();@b@    while (true) { label64: Class candidateClass;@b@      Method candidateMethod;@b@      while (true) { if (!(i$.hasNext())) break label137; candidateClass = (Class)i$.next();@b@        if (Modifier.isPublic(candidateClass.getModifiers()))@b@          break;@b@      }@b@      try@b@      {@b@        candidateMethod = candidateClass.getMethod(methodName, parameterTypes);@b@      } catch (NoSuchMethodException ex) {@b@        break label64:@b@      }@b@      if (Modifier.isPublic(candidateMethod.getDeclaringClass().getModifiers()))@b@        return candidateMethod;@b@@b@    }@b@@b@    label137: throw new NoSuchMethodException(new StringBuilder().append("Can't find a public method for ").append(methodName).append(" ").append(ArrayUtils.toString(parameterTypes)).toString());@b@  }@b@@b@  private static String toCanonicalName(String className)@b@  {@b@    className = StringUtils.deleteWhitespace(className);@b@    if (className == null)@b@      throw new NullPointerException("className must not be null.");@b@    if (className.endsWith("[]")) {@b@      StringBuilder classNameBuffer = new StringBuilder();@b@      while (className.endsWith("[]")) {@b@        className = className.substring(0, className.length() - 2);@b@        classNameBuffer.append("[");@b@      }@b@      String abbreviation = (String)abbreviationMap.get(className);@b@      if (abbreviation != null)@b@        classNameBuffer.append(abbreviation);@b@      else@b@        classNameBuffer.append("L").append(className).append(";");@b@@b@      className = classNameBuffer.toString();@b@    }@b@    return className;@b@  }@b@@b@  public static Class>[] toClass(Object[] array)@b@  {@b@    if (array == null)@b@      return null;@b@    if (array.length == 0)@b@      return ArrayUtils.EMPTY_CLASS_ARRAY;@b@@b@    Class[] classes = new Class[array.length];@b@    for (int i = 0; i  cls)@b@  {@b@    if (cls == null)@b@      return "";@b@@b@    return getShortCanonicalName(cls.getName());@b@  }@b@@b@  public static String getShortCanonicalName(String canonicalName)@b@  {@b@    return getShortClassName(getCanonicalName(canonicalName));@b@  }@b@@b@  public static String getPackageCanonicalName(Object object, String valueIfNull)@b@  {@b@    if (object == null)@b@      return valueIfNull;@b@@b@    return getPackageCanonicalName(object.getClass().getName());@b@  }@b@@b@  public static String getPackageCanonicalName(Class> cls)@b@  {@b@    if (cls == null)@b@      return "";@b@@b@    return getPackageCanonicalName(cls.getName());@b@  }@b@@b@  public static String getPackageCanonicalName(String canonicalName)@b@  {@b@    return getPackageName(getCanonicalName(canonicalName));@b@  }@b@@b@  private static String getCanonicalName(String className)@b@  {@b@    className = StringUtils.deleteWhitespace(className);@b@    if (className == null)@b@      return null;@b@@b@    int dim = 0;@b@    while (className.startsWith("[")) {@b@      ++dim;@b@      className = className.substring(1);@b@    }@b@    if (dim  0) {@b@      className = (String)reverseAbbreviationMap.get(className.substring(0, 1));@b@    }@b@@b@    StringBuilder canonicalClassNameBuffer = new StringBuilder(className);@b@    for (int i = 0; i > hierarchy(Class> type)@b@  {@b@    return hierarchy(type, Interfaces.EXCLUDE);@b@  }@b@@b@  public static Iterable> hierarchy(Class> type, Interfaces interfacesBehavior)@b@  {@b@    Iterable classes = new Iterable(type)@b@    {@b@      public Iterator> iterator()@b@      {@b@        MutableObject next = new MutableObject(this.val$type);@b@        return new Iterator(this, next)@b@        {@b@          public boolean hasNext()@b@          {@b@            return (this.val$next.getValue() != null);@b@          }@b@@b@          public Class> next()@b@          {@b@            Class result = (Class)this.val$next.getValue();@b@            this.val$next.setValue(result.getSuperclass());@b@            return result;@b@          }@b@@b@          public void remove()@b@          {@b@            throw new UnsupportedOperationException();@b@          }@b@@b@        };@b@      }@b@@b@    };@b@    if (interfacesBehavior != Interfaces.INCLUDE)@b@      return classes;@b@@b@    return new Iterable(classes)@b@    {@b@      public Iterator> iterator()@b@      {@b@        Set seenInterfaces = new HashSet();@b@        Iterator wrapped = this.val$classes.iterator();@b@@b@        return new Iterator(this, wrapped, seenInterfaces)@b@        {@b@          Iterator> interfaces;@b@@b@          public boolean hasNext() {@b@            return ((this.interfaces.hasNext()) || (this.val$wrapped.hasNext()));@b@          }@b@@b@          public Class> next()@b@          {@b@            if (this.interfaces.hasNext()) {@b@              Class nextInterface = (Class)this.interfaces.next();@b@              this.val$seenInterfaces.add(nextInterface);@b@              return nextInterface;@b@            }@b@            Class nextSuperclass = (Class)this.val$wrapped.next();@b@            Set currentInterfaces = new LinkedHashSet();@b@            walkInterfaces(currentInterfaces, nextSuperclass);@b@            this.interfaces = currentInterfaces.iterator();@b@            return nextSuperclass;@b@          }@b@@b@          private void walkInterfaces(, Class> c) {@b@            Class[] arr$ = c.getInterfaces(); int len$ = arr$.length; for (int i$ = 0; i$ 

2.MutableObjectpackage org.apache.commons.lang3.mutable;@b@@b@import java.io.Serializable;@b@@b@public class MutableObject@b@  implements Mutable, Serializable@b@{@b@  private static final long serialVersionUID = 86241875189L;@b@  private T value;@b@@b@  public MutableObject()@b@  {@b@  }@b@@b@  public MutableObject(T value)@b@  {@b@    this.value = value;@b@  }@b@@b@  public T getValue()@b@  {@b@    return this.value;@b@  }@b@@b@  public void setValue(T value)@b@  {@b@    this.value = value;@b@  }@b@@b@  public boolean equals(Object obj)@b@  {@b@    if (obj == null)@b@      return false;@b@@b@    if (this == obj)@b@      return true;@b@@b@    if (super.getClass() == obj.getClass()) {@b@      MutableObject that = (MutableObject)obj;@b@      return this.value.equals(that.value);@b@    }@b@    return false;@b@  }@b@@b@  public int hashCode()@b@  {@b@    return ((this.value == null) ? 0 : this.value.hashCode());@b@  }@b@@b@  public String toString()@b@  {@b@    return ((this.value == null) ? "null" : this.value.toString());@b@  }@b@}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE.txtMETA-INF/NOTICE.txtorg.apache.commons.lang.ArrayUtils.class org.apache.commons.lang.BitField.class org.apache.commons.lang.BooleanUtils.class org.apache.commons.lang.CharEncoding.class org.apache.commons.lang.CharRange.class org.apache.commons.lang.CharSet.class org.apache.commons.lang.CharSetUtils.class org.apache.commons.lang.CharUtils.class org.apache.commons.lang.ClassUtils.class org.apache.commons.lang.Entities$ArrayEntityMap.class org.apache.commons.lang.Entities$BinaryEntityMap.class org.apache.commons.lang.Entities$EntityMap.class org.apache.commons.lang.Entities$HashEntityMap.class org.apache.commons.lang.Entities$LookupEntityMap.class org.apache.commons.lang.Entities$MapIntMap.class org.apache.commons.lang.Entities$PrimitiveEntityMap.class org.apache.commons.lang.Entities$TreeEntityMap.class org.apache.commons.lang.Entities.class org.apache.commons.lang.IllegalClassException.class org.apache.commons.lang.IncompleteArgumentException.class org.apache.commons.lang.IntHashMap$Entry.class org.apache.commons.lang.IntHashMap.class org.apache.commons.lang.LocaleUtils.class org.apache.commons.lang.NotImplementedException.class org.apache.commons.lang.NullArgumentException.class org.apache.commons.lang.NumberRange.class org.apache.commons.lang.NumberUtils.class org.apache.commons.lang.ObjectUtils$Null.class org.apache.commons.lang.ObjectUtils.class org.apache.commons.lang.RandomStringUtils.class org.apache.commons.lang.SerializationException.class org.apache.commons.lang.SerializationUtils.class org.apache.commons.lang.StringEscapeUtils.class org.apache.commons.lang.StringUtils.class org.apache.commons.lang.SystemUtils.class org.apache.commons.lang.UnhandledException.class org.apache.commons.lang.Validate.class org.apache.commons.lang.WordUtils.class org.apache.commons.lang.builder.CompareToBuilder.class org.apache.commons.lang.builder.EqualsBuilder.class org.apache.commons.lang.builder.HashCodeBuilder.class org.apache.commons.lang.builder.ReflectionToStringBuilder$1.class org.apache.commons.lang.builder.ReflectionToStringBuilder.class org.apache.commons.lang.builder.StandardToStringStyle.class org.apache.commons.lang.builder.ToStringBuilder.class org.apache.commons.lang.builder.ToStringStyle$DefaultToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$NoFieldNameToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$ShortPrefixToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$SimpleToStringStyle.class org.apache.commons.lang.builder.ToStringStyle.class org.apache.commons.lang.enum.Enum$Entry.class org.apache.commons.lang.enum.Enum.class org.apache.commons.lang.enum.EnumUtils.class org.apache.commons.lang.enum.ValuedEnum.class org.apache.commons.lang.enums.Enum$Entry.class org.apache.commons.lang.enums.Enum.class org.apache.commons.lang.enums.EnumUtils.class org.apache.commons.lang.enums.ValuedEnum.class org.apache.commons.lang.exception.ExceptionUtils.class org.apache.commons.lang.exception.Nestable.class org.apache.commons.lang.exception.NestableDelegate.class org.apache.commons.lang.exception.NestableError.class org.apache.commons.lang.exception.NestableException.class org.apache.commons.lang.exception.NestableRuntimeException.class org.apache.commons.lang.math.DoubleRange.class org.apache.commons.lang.math.FloatRange.class org.apache.commons.lang.math.Fraction.class org.apache.commons.lang.math.IntRange.class org.apache.commons.lang.math.JVMRandom.class org.apache.commons.lang.math.LongRange.class org.apache.commons.lang.math.NumberRange.class org.apache.commons.lang.math.NumberUtils.class org.apache.commons.lang.math.RandomUtils.class org.apache.commons.lang.math.Range.class org.apache.commons.lang.mutable.Mutable.class org.apache.commons.lang.mutable.MutableBoolean.class org.apache.commons.lang.mutable.MutableByte.class org.apache.commons.lang.mutable.MutableDouble.class org.apache.commons.lang.mutable.MutableFloat.class org.apache.commons.lang.mutable.MutableInt.class org.apache.commons.lang.mutable.MutableLong.class org.apache.commons.lang.mutable.MutableObject.class org.apache.commons.lang.mutable.MutableShort.class org.apache.commons.lang.text.CompositeFormat.class org.apache.commons.lang.text.StrBuilder$StrBuilderReader.class org.apache.commons.lang.text.StrBuilder$StrBuilderTokenizer.class org.apache.commons.lang.text.StrBuilder$StrBuilderWriter.class org.apache.commons.lang.text.StrBuilder.class org.apache.commons.lang.text.StrLookup$MapStrLookup.class org.apache.commons.lang.text.StrLookup.class org.apache.commons.lang.text.StrMatcher$CharMatcher.class org.apache.commons.lang.text.StrMatcher$CharSetMatcher.class org.apache.commons.lang.text.StrMatcher$NoMatcher.class org.apache.commons.lang.text.StrMatcher$StringMatcher.class org.apache.commons.lang.text.StrMatcher$TrimMatcher.class org.apache.commons.lang.text.StrMatcher.class org.apache.commons.lang.text.StrSubstitutor.class org.apache.commons.lang.text.StrTokenizer.class org.apache.commons.lang.time.DateFormatUtils.class org.apache.commons.lang.time.DateUtils$DateIterator.class org.apache.commons.lang.time.DateUtils.class org.apache.commons.lang.time.DurationFormatUtils$Token.class org.apache.commons.lang.time.DurationFormatUtils.class org.apache.commons.lang.time.FastDateFormat$CharacterLiteral.class org.apache.commons.lang.time.FastDateFormat$NumberRule.class org.apache.commons.lang.time.FastDateFormat$PaddedNumberField.class org.apache.commons.lang.time.FastDateFormat$Pair.class org.apache.commons.lang.time.FastDateFormat$Rule.class org.apache.commons.lang.time.FastDateFormat$StringLiteral.class org.apache.commons.lang.time.FastDateFormat$TextField.class org.apache.commons.lang.time.FastDateFormat$TimeZoneDisplayKey.class org.apache.commons.lang.time.FastDateFormat$TimeZoneNameRule.class org.apache.commons.lang.time.FastDateFormat$TimeZoneNumberRule.class org.apache.commons.lang.time.FastDateFormat$TwelveHourField.class org.apache.commons.lang.time.FastDateFormat$TwentyFourHourField.class org.apache.commons.lang.time.FastDateFormat$TwoDigitMonthField.class org.apache.commons.lang.time.FastDateFormat$TwoDigitNumberField.class org.apache.commons.lang.time.FastDateFormat$TwoDigitYearField.class org.apache.commons.lang.time.FastDateFormat$UnpaddedMonthField.class org.apache.commons.lang.time.FastDateFormat$UnpaddedNumberField.class org.apache.commons.lang.time.FastDateFormat.class org.apache.commons.lang.time.StopWatch.class

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值