使用反射调用方法

逃离我推掉我的手 2022-06-16 10:23 270阅读 0赞

定义一个标准的JavaBean,名叫Person,包含属性name、age。使用反射的方式创建一个实例、调用构造函数初始化name、age,使用反射方式调用setName方法对名称进行设置,不使用setAge方法直接使用反射方式对age赋值。

  1. package com.alex.question2;
  2. import java.lang.reflect.InvocationTargetException;
  3. import java.lang.reflect.Method;
  4. public class ReflectTest {
  5. public static void main(String[] args) {
  6. try {
  7. Person person = Person.class.getConstructor(String.class,int.class).newInstance("alex",25);
  8. System.out.println("name:"+person.getName()+"\nage:"+person.getAge());
  9. Method setNameMethod=Person.class.getMethod("setName", String.class);
  10. setNameMethod.invoke(person, "zhuang");
  11. Method setAgeMethod=Person.class.getMethod("setAge", int.class);
  12. setAgeMethod.invoke(person, 23);
  13. System.out.println("name:"+person.getName()+"\nage:"+person.getAge());
  14. } catch (IllegalArgumentException e) {
  15. // TODO Auto-generated catch block
  16. e.printStackTrace();
  17. } catch (SecurityException e) {
  18. // TODO Auto-generated catch block
  19. e.printStackTrace();
  20. } catch (InstantiationException e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. } catch (IllegalAccessException e) {
  24. // TODO Auto-generated catch block
  25. e.printStackTrace();
  26. } catch (InvocationTargetException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. } catch (NoSuchMethodException e) {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();
  32. }
  33. }
  34. }
  35. package com.alex.question2;
  36. public class Person {
  37. private String name;
  38. private int age;
  39. public String getName() {
  40. return name;
  41. }
  42. public int getAge() {
  43. return age;
  44. }
  45. public void setName(String name) {
  46. this.name = name;
  47. }
  48. public void setAge(int age) {
  49. this.age = age;
  50. }
  51. public Person(String name, int age) {
  52. super();
  53. this.name = name;
  54. this.age = age;
  55. }
  56. public Person(){
  57. }
  58. }

运行结果:

name:alex
age:25
name:zhuang
age:23

发表评论

表情:
评论列表 (有 0 条评论,270人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA反射调用方法

    一、利用反射创建对象 创建对象: 1、使用 Class 对象的 newInstance()方法创建该 Class 对象的实例,此时该 Class 对象必须要有无参...