使用反射获取Method,可以使用getMethod(String name, Class<?>... parameterTypes)来获取,第一个参数是方法的名字,第二个是参数类表。
但是这个方法没参数呢?比如:
一个简单的Person 类
- public class Person {
- public String name="zhangsan";
- public int age;
- public String str1 = "ball";
- public String str2 = "baskecballl";
- public Person(){
- this.str1=str1;
- this.str2=str2;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- @Override
- public String toString() {
- return "Person [age=" + age + ", name=" + name + ", str1=" + str1
- + ", str2=" + str2 + "]";
- }
- }
复制代码 如果是调用set方法很简单,根据规则
- Method methodName = p.getClass().getMethod("setName",String.class);
- System.out.println(methodName.invoke(p, "张三"));
复制代码 这样就获取了,但是如果是get 方法呢,参数列表是空,怎么做的?
这样可以
- Method methodName = p.getClass().getMethod("getName",null);
- System.out.println(methodName.invoke(p,null));
复制代码 这样更好- Method methodName = p.getClass().getMethod("getName");
- System.out.println(methodName.invoke(p));
复制代码
|
|