Demo11.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package J20250806.reflection;
  2. import java.lang.reflect.*;
  3. /**
  4. * @author WanJl
  5. * @version 1.0
  6. * @title Demo11
  7. * @description
  8. * 案例4:方法调用
  9. * 在Calculator类中定义:
  10. * 公共方法add(int a, int b)返回两数之和
  11. * 私有方法multiply(double a, double b)返回两数之积
  12. * 使用反射调用这两个方法并输出结果。
  13. * @create 2025/8/6
  14. */
  15. public class Demo11 {
  16. public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchFieldException {
  17. Class<Calculator> calculatorClass = Calculator.class;
  18. //获取构造方法,用来创建对象
  19. Constructor<Calculator> constructor = calculatorClass.getDeclaredConstructor();
  20. constructor.setAccessible(true);
  21. Calculator calculator = constructor.newInstance();
  22. //获取普通方法
  23. Method[] declaredMethods = calculatorClass.getDeclaredMethods();
  24. for (Method method:declaredMethods){
  25. method.setAccessible(true);
  26. Object invoke = method.invoke(calculator, 15, 66);
  27. System.out.println(invoke);
  28. }
  29. Method add = calculatorClass.getDeclaredMethod("add",int.class,int.class);
  30. add.setAccessible(true);
  31. System.out.println(add.invoke(calculator,15, 6));
  32. Method multiply = calculatorClass.getDeclaredMethod("multiply",double.class,double.class);
  33. multiply.setAccessible(true);
  34. System.out.println(multiply.invoke(calculator,15, 6));
  35. }
  36. }