Home
Java
reflect: getDeclaredMethod, invoke
Updated Jun 8, 2023
Dot Net Perls
Reflect. A Java program can look into its own structure. It can (for example) call a method by using a string for its name. This enables many powerful abilities.
Reflection, though powerful, is not as efficient as calling a method directly. It is harder to optimize. We should reserve it for special situations.
GetDeclaredMethod example. To begin, we have a simple Java program in a "Program" class. In main, we indicate we can throw many exceptions.
Tip The "throws" statements are auto-generated by Eclipse. You can let Eclipse add these on its own.
Note We use getDeclaredMethod() with 1 or more arguments. The first argument is the name of the method.
Finally The invoke() method calls the Method reference. So the executable code in the method is run.
import java.lang.reflect.*; public class Program { static void test() { // Say hello. System.out.println("Hello world"); } static void bird(String message) { // Print the argument. System.out.print("Bird says: "); System.out.println(message); } public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { // Use getDeclaredMethod. // ... This gets the test method by its name. Method testMethod = Program.class.getDeclaredMethod("test"); // Invoke the test method. testMethod.invoke(null, null); // Use getDeclaredMethod. // ... Get the bird method with a first argument of String. Method birdMethod = Program.class.getDeclaredMethod("bird", String.class); // Invoke the bird method. // ... First argument is class instance, which is null for a static method. // Second argument is the actual argument String. birdMethod.invoke(null, "Seed"); } }
Hello world Bird says: Seed
Consider the arguments to getDeclaredMethod. The first is the method name (like "test"). The second is a class argument (like String.class) if the method has an argument.
Also If there is no argument, you can omit the class reference from the getDeclaredMethod call.
Notes, invoke. Consider now the invoke() method. It receives 2 or more arguments. For a static method, we can use null as the first argument.
And The second argument is the actual value to be passed to the method—like a String instance.
A summary. Reflection has its place in Java programs. It can enable powerful features—like the ability for a program to analyze other programs (or itself) for flaws.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Jun 8, 2023 (edit).
Home
Changes
© 2007-2025 Sam Allen