package me.andy.practice.reflect;import org.junit.Test;import java.lang.reflect.Constructor;import java.lang.reflect.Method;import static junit.framework.Assert.assertEquals;public class MethodInvokeTest { @Test public void test_add() throws Exception { Class<?> personClass = Calculate.class; Object person = personClass.newInstance(); Method method = personClass.getDeclaredMethod("add", new Class[]{int.class, int.class}); Object result = method.invoke(person, new Object[]{1, 2}); assertEquals(result, 3); } @Test public void test_subtract() throws Exception { Class<?> personClass = Calculate.class; Object person = personClass.newInstance(); Method method = personClass.getDeclaredMethod("subtract", new Class[]{int.class, int.class}); method.setAccessible(true); Object result = method.invoke(person, new Object[]{2, 1}); assertEquals(result, 1); }}class Calculate { public int add(int a, int b) { return a + b; } private int subtract(int a, int b) { return a - b; }}
Create object: Object person = personclass. newinstance ();
Method method = personclass. getmethod ("add", new class [] {Int. Class, Int. Class });
Method call: Object result = method. Invoke (person, new object [] {1, 2 });
Private access method: method. setaccessible (true );