public MethodHandle getMethodHandle() { return new MethodHandle(type.name.toString(), name, parameterTypes.toArray(new String[parameterTypes.size()])); }
public MethodHandle getMethodHandle() { return new MethodHandle(type.name.toString(), name, parameterTypes.toArray(new String[parameterTypes.size()])); }
public static MethodHandle parse(String s) throws NullPointerException, IllegalArgumentException { int method = s.indexOf('#'); if (method == -1) { throw new IllegalArgumentException("Invalid method handle " + s); } int leftParenthesis = s.indexOf('(', method + 1); if (leftParenthesis == -1 || leftParenthesis > s.length() - 2) { throw new IllegalArgumentException("Invalid method handle " + s); } if (s.charAt(s.length() - 1) != ')') { throw new IllegalArgumentException("Invalid method handle " + s); } // String type = s.substring(0, method); String name = s.substring(method + 1, leftParenthesis); // if (s.length() - leftParenthesis == 2) { return new MethodHandle(type, name); } else { String[] list = EMPTY_STRINGS; for (String parameter : Spliterator.split(s, leftParenthesis + 1, s.length() - 1, ',', new ArrayList<String>())) { if (parameter.length() == 0) { throw new IllegalArgumentException(); } list = Tools.appendTo(list, parameter); } return new MethodHandle(type, name, list); } }
public static MethodHandle parse(String s) throws NullPointerException, IllegalArgumentException { int method = s.indexOf('#'); if (method == -1) { throw new IllegalArgumentException("Invalid method handle " + s); } int leftParenthesis = s.indexOf('(', method + 1); if (leftParenthesis == -1 || leftParenthesis > s.length() - 2) { throw new IllegalArgumentException("Invalid method handle " + s); } if (s.charAt(s.length() - 1) != ')') { throw new IllegalArgumentException("Invalid method handle " + s); } // String type = s.substring(0, method); String name = s.substring(method + 1, leftParenthesis); // if (s.length() - leftParenthesis == 2) { return new MethodHandle(type, name); } else { String[] list = EMPTY_STRINGS; for (String parameter : Spliterator.split(s, leftParenthesis + 1, s.length() - 1, ',', new ArrayList<String>())) { if (parameter.length() == 0) { throw new IllegalArgumentException(); } list = Tools.appendTo(list, parameter); } return new MethodHandle(type, name, list); } }
this.parameterMap = Collections.unmodifiableMap(argumentMap); this.requiresPrefix = requiresPrefix; this.handle = new MethodHandle(method);
this.parameterMap = Collections.unmodifiableMap(argumentMap); this.requiresPrefix = requiresPrefix; this.handle = new MethodHandle(method);
@Test public void testToString() { assertEquals("a#b()", new MethodHandle("a", "b").toString()); assertEquals("a#b(c)", new MethodHandle("a", "b", "c").toString()); assertEquals("a#b(c,d)", new MethodHandle("a", "b", "c", "d").toString()); }
@Test public void testParse() { assertEquals(new MethodHandle("a", "b"), MethodHandle.parse("a#b()")); assertEquals(new MethodHandle("a", "b", "c"), MethodHandle.parse("a#b(c)")); assertEquals(new MethodHandle("a", "b", "c", "d"), MethodHandle.parse("a#b(c,d)")); }
@Test public void testParse() { assertEquals(new MethodHandle("a", "b"), MethodHandle.parse("a#b()")); assertEquals(new MethodHandle("a", "b", "c"), MethodHandle.parse("a#b(c)")); assertEquals(new MethodHandle("a", "b", "c", "d"), MethodHandle.parse("a#b(c,d)")); }
@Test public void testToString() { assertEquals("a#b()", new MethodHandle("a", "b").toString()); assertEquals("a#b(c)", new MethodHandle("a", "b", "c").toString()); assertEquals("a#b(c,d)", new MethodHandle("a", "b", "c", "d").toString()); }
private static void assertParameterTypes(Method m, String... parameterTypes) { MethodHandle handle = new MethodHandle(m); assertEquals(parameterTypes.length, handle.getParameterSize()); for (int i = 0;i < parameterTypes.length;i++) { assertEquals(parameterTypes[i], handle.getParameterAt(i)); } }
private static void assertParameterTypes(Method m, String... parameterTypes) { MethodHandle handle = new MethodHandle(m); assertEquals(parameterTypes.length, handle.getParameterSize()); for (int i = 0;i < parameterTypes.length;i++) { assertEquals(parameterTypes[i], handle.getParameterAt(i)); } }