看aop部分的代碼的時候,看到spring判斷調用ClassUtils
的isCglibProxyClass
方法判斷中,有個判斷類名的方法:java
className.contains(CGLIB_CLASS_SEPARATOR)
而後就看了一眼常量值,很是有趣。spring
// "java.lang.String[]" style arrays /** Suffix for array class names: "[]" */ public static final String ARRAY_SUFFIX = "[]"; // "[[I" or "[[Ljava.lang.String;" style arrays /** Prefix for internal array class names: "[" */ private static final String INTERNAL_ARRAY_PREFIX = "["; // "[Ljava.lang.String;" style arrays /** Prefix for internal non-primitive array class names: "[L" */ private static final String NON_PRIMITIVE_ARRAY_PREFIX = "[L"; /** The package separator character '.' */ private static final char PACKAGE_SEPARATOR = '.'; // 這個就是內部類啊~內部類的間隔符 /** The inner class separator character '$' */ private static final char INNER_CLASS_SEPARATOR = '$'; /** The CGLIB class separator character "$$" */ public static final String CGLIB_CLASS_SEPARATOR = "$$"; /** The ".class" file suffix */ public static final String CLASS_FILE_SUFFIX = ".class";
內部類的間隔符 ==>ide
Collections.sort(list, new Comparator<TabBean>(){ @Override public int compare(TabBean o1, TabBean o2) { return o1.getSort() - o2.getSort(); } });
class InnerClass {} static class StaticInnerClass {} public class PublicInnerClass {} public static class PublicInnerStaticClass {}