private static List<String> getParameterDescriptors(CharBuffer cb) { List<String> result = new ArrayList<String>(); cb.get(); // Skip the initial '(' while (cb.hasRemaining() && cb.get(cb.position()) != ')') { StringBuilder sb = new StringBuilder(); nextDescriptor(cb, sb); result.add(sb.toString()); } return result; }
private static void nextDescriptor(CharBuffer cb, StringBuilder sb) { char c = cb.get(); sb.append(c); if (c == 'L') { do { c = cb.get(); sb.append(c); } while (c != ';'); } else if (c == '[') { nextDescriptor(cb, sb); } else { // Must be a primitive } }