Get a Method

To get a specific method from a class you can use getMethod. If there is no method that matches the name and argument types a NoSuchMethodException will be thrown. 1

import java.lang.reflect.Method; class Main { void main() throws NoSuchMethodException { Class<Tea> teaClass = Tea.class; Method sipMethod = teaClass.getMethod("sip"); System.out.println(sipMethod); } } class Tea { public void sip() { } }

Unlike fields which can be identified only by their name, methods which are distinct overloads of eachother are distinguised by the arguments they take in.

import java.lang.reflect.Method; class Main { void main() throws NoSuchMethodException { Class<Tea> teaClass = Tea.class; // There is a sip method which takes zero arguments Method sipMethod = teaClass.getMethod("sip"); System.out.println(sipMethod); // which is a different method than // sip that takes one int sipMethod = teaClass.getMethod("sip", int.class); System.out.println(sipMethod); // which is a different method than // sip that takes a String and an int sipMethod = teaClass.getMethod("sip", String.class, int.class); System.out.println(sipMethod); } } class Tea { public void sip() { } public void sip(int numberOfSips) { } public void sip(String baristaName, int numberOfSips) { } }

And, as you might imagine, getDeclaredMethod will do the same thing with the distinction of seeing non-public methods.

class Main { void main() throws NoSuchMethodException { Class<Fruit> fruitClass = Fruit.class; System.out.println(fruitClass.getDeclaredMethod("bite")); System.out.println(fruitClass.getDeclaredMethod("chew")); System.out.println(fruitClass.getDeclaredMethod("swallow")); } } class Fruit { public void bite() { } void chew() { } private void swallow() { } }