diff options
author | Roland Praml <praml@foconis.de> | 2018-07-08 21:46:12 +0200 |
---|---|---|
committer | Roel Spilker <r.spilker@gmail.com> | 2018-08-20 20:46:31 +0200 |
commit | 40570f7950dc05f90bea05396c9d23d426fe99ba (patch) | |
tree | 10e7f8c0112392d54d279c7aaf4fb12da9cb6c06 | |
parent | 100cff228d0f4d68219460aefe89b70877b726dc (diff) | |
download | lombok-40570f7950dc05f90bea05396c9d23d426fe99ba.tar.gz lombok-40570f7950dc05f90bea05396c9d23d426fe99ba.tar.bz2 lombok-40570f7950dc05f90bea05396c9d23d426fe99ba.zip |
optimized the to/fromQualifiedName method
-rw-r--r-- | src/utils/lombok/eclipse/Eclipse.java | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/utils/lombok/eclipse/Eclipse.java b/src/utils/lombok/eclipse/Eclipse.java index 5ef33086..943a7a7a 100644 --- a/src/utils/lombok/eclipse/Eclipse.java +++ b/src/utils/lombok/eclipse/Eclipse.java @@ -56,6 +56,8 @@ public class Eclipse { */ public static final int ECLIPSE_DO_NOT_TOUCH_FLAG = ASTNode.Bit24; + private static final Pattern SPLIT_AT_DOT = Pattern.compile("\\."); + private Eclipse() { //Prevent instantiation } @@ -65,19 +67,25 @@ public class Eclipse { * but we need to deal with it. This turns [[java][lang][String]] into "java.lang.String". */ public static String toQualifiedName(char[][] typeName) { - int len = typeName.length - 1; + int len = typeName.length - 1; // number of dots + if (len == 0) return new String(typeName[0]); + for (char[] c : typeName) len += c.length; - StringBuilder sb = new StringBuilder(len); - boolean first = true; - for (char[] c : typeName) { - sb.append(first ? "" : ".").append(c); - first = false; + char[] ret = new char[len]; + char[] part = typeName[0]; + System.arraycopy(part, 0, ret, 0, part.length); + int pos = part.length; + for (int i = 1; i < typeName.length; i++) { + ret[pos++] = '.'; + part = typeName[i]; + System.arraycopy(part, 0, ret, pos, part.length); + pos += part.length; } - return sb.toString(); + return new String(ret); } public static char[][] fromQualifiedName(String typeName) { - String[] split = typeName.split("\\."); + String[] split = SPLIT_AT_DOT.split(typeName); char[][] result = new char[split.length][]; for (int i = 0; i < split.length; i++) { result[i] = split[i].toCharArray(); |