Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Produce less String-related garbage in ReflectUtils::getClass
  • Loading branch information
SergiiTsypanov committed Jul 8, 2019
commit 4506fc8469d0881b83703e9829a1a9ffe65a230a
18 changes: 12 additions & 6 deletions cglib/src/main/java/net/sf/cglib/core/ReflectUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -240,10 +240,7 @@ private static Class getClass(String className, ClassLoader loader, String[] pac
while ((index = className.indexOf("[]", index) + 1) > 0) {
dimensions++;
}
StringBuffer brackets = new StringBuffer(className.length() - dimensions);
for (int i = 0; i < dimensions; i++) {
brackets.append('[');
}
String brackets = getBrackets(dimensions);
className = className.substring(0, className.length() - 2 * dimensions);

String prefix = (dimensions > 0) ? brackets + "L" : "";
Expand Down Expand Up @@ -271,8 +268,17 @@ private static Class getClass(String className, ClassLoader loader, String[] pac
}
throw new ClassNotFoundException(save);
}



private static String getBrackets(int dimensions) {
if (dimensions == 0) {
return "";
}
char[] brackets = new char[dimensions];
Arrays.fill(brackets, '[');
return new String(brackets);
}


public static Object newInstance(Class type) {
return newInstance(type, Constants.EMPTY_CLASS_ARRAY, null);
}
Expand Down