reflect: getDeclaredMethod, invoke
This page was last reviewed on 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 tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Jun 8, 2023 (edit).
© 2007-2024 Sam Allen.