/** * @see #findMethod(Class, String) */ public static Method findDeclaredMethod(final Class c, final String methodName) { return findDeclaredMethod(c, methodName, false); }
/** * Returns method from an object, matched by name. This may be considered as * a slow operation, since methods are matched one by one. * Returns only accessible methods. * Only first method is matched. * * @param c class to examine * @param methodName Full name of the method. * @return null if method not found */ public static Method findMethod(final Class c, final String methodName) { return findDeclaredMethod(c, methodName, true); }
@Test void testPrimitivesArrays1() throws NoSuchMethodException { Method m = ClassUtil.findDeclaredMethod(Foo.class, "primarr1"); MethodParameter[] mps = Paramo.resolveParameters(m); String[] s = resolveParameterNames(mps); assertEquals(2, s.length); assertEquals("one", s[0]); assertEquals("two", s[1]); }
@Test void testPrimitivesArrays3() throws NoSuchMethodException { Method m = ClassUtil.findDeclaredMethod(Foo.class, "primarrShortByte"); MethodParameter[] mps = Paramo.resolveParameters(m); String[] s = resolveParameterNames(mps); assertEquals(3, s.length); assertEquals("s", s[0]); assertEquals("y", s[1]); assertEquals("somethingElse", s[2]); }
@Test void testGeneric() { Method m = ClassUtil.findDeclaredMethod(Generic.class, "one"); MethodParameter[] mps = Paramo.resolveParameters(m); assertEquals(2, mps.length); assertEquals("foo", mps[0].getName()); assertEquals("Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;", mps[0].getSignature()); assertEquals("aLong", mps[1].getName()); assertEquals("Ljava/lang/Long;", mps[1].getSignature()); m = ClassUtil.findDeclaredMethod(Generic.class, "two"); mps = Paramo.resolveParameters(m); assertEquals(1, mps.length); assertEquals("zzz", mps[0].getName()); assertEquals("Ljava/util/Map<Ljava/lang/String;Ljodd/paramo/fixtures/Bar<Ljava/lang/Long;>;>;", mps[0].getSignature()); }
@Test void testPrimitivesArrays2() throws NoSuchMethodException { Method m = ClassUtil.findDeclaredMethod(Foo.class, "primarr2"); MethodParameter[] mps = Paramo.resolveParameters(m); String[] s = resolveParameterNames(mps); assertEquals(6, s.length); assertEquals("i", s[0]); assertEquals("l", s[1]); assertEquals("f", s[2]); assertEquals("d", s[3]); assertEquals("b", s[4]); assertEquals("c", s[5]); }
@Test void testNonGeneric() { Method m = ClassUtil.findDeclaredMethod(NonGeneric.class, "one"); MethodParameter[] mps = Paramo.resolveParameters(m); assertEquals(2, mps.length); assertEquals("foo", mps[0].getName()); assertEquals("Ljava/util/Map;", mps[0].getSignature()); assertEquals("aLong", mps[1].getName()); assertEquals("Ljava/lang/Long;", mps[1].getSignature()); }
@Test void testPrimitives() throws NoSuchMethodException { Method m = ClassUtil.findDeclaredMethod(Foo.class, "primitives"); MethodParameter[] mps = Paramo.resolveParameters(m); String[] s = resolveParameterNames(mps); assertEquals(8, s.length); assertEquals("i", s[0]); assertEquals("l", s[1]); assertEquals("f", s[2]); assertEquals("d", s[3]); assertEquals("s", s[4]); assertEquals("b", s[5]); assertEquals("c", s[6]); assertEquals("y", s[7]); }
@Test void testGenericsWildcards() { Method m = ClassUtil.findDeclaredMethod(Generic.class, "three"); MethodParameter[] mps = Paramo.resolveParameters(m); assertEquals(3, mps.length); assertEquals("comparable", mps[0].getName()); assertEquals("Ljava/lang/Comparable<*>;", mps[0].getSignature()); assertEquals("(java.lang.Comparable<?>)", resolveSignature(mps[0].getSignature())); assertEquals("iterator", mps[1].getName()); assertEquals("Ljava/util/Iterator<+Ljava/lang/CharSequence;>;", mps[1].getSignature()); assertEquals("(java.util.Iterator<? extends java.lang.CharSequence>)", resolveSignature(mps[1].getSignature())); assertEquals("list", mps[2].getName()); assertEquals("Ljava/util/List<-Ljava/lang/Integer;>;", mps[2].getSignature()); assertEquals("(java.util.List<? super java.lang.Integer>)", resolveSignature(mps[2].getSignature())); }
/** * @see #findMethod(Class, String) */ public static Method findDeclaredMethod(final Class c, final String methodName) { return findDeclaredMethod(c, methodName, false); }
/** * Returns method from an object, matched by name. This may be considered as * a slow operation, since methods are matched one by one. * Returns only accessible methods. * Only first method is matched. * * @param c class to examine * @param methodName Full name of the method. * @return null if method not found */ public static Method findMethod(final Class c, final String methodName) { return findDeclaredMethod(c, methodName, true); }