Java反射之Method Class.getMethod(String name, Class<?>... parameterTypes)
2017-02-03 15:06
621 查看
Method Class.getMethod(String name, Class<?>... parameterTypes)的作用是获得对象所声明的公开方法
该方法的第一个参数name是要获得方法的名字,第二个参数parameterTypes是按声明顺序标识该方法形参类型。
person.getClass().getMethod("Speak", null);
//获得person对象的Speak方法,因为Speak方法没有形参,所以parameterTypes为null
person.getClass().getMethod("run", String.class);
//获得person对象的run方法,因为run方法的形参是String类型的,所以parameterTypes为String.class
如果对象内的方法的形参是int类型的,则parameterTypes是int.class
本人写了一个例子来帮助大家来理解此方法的作用:
Person类:
package fyh.reflectDemo;
public class Person {
private String name;
private int ID;
public String speed;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public Person(String name,int ID){
this.name = name;
this.ID = ID;
}
public void Speak(){
System.out.println("Hello! "+"My name is "+name);
}
public void run(String speed){
System.out.println("I can run " + speed+" KM!!!");
}
}
testMain类:
package fyh.reflectDemo;
import java.lang.reflect.Method;
public class testMain {
public static void main(String[] args) throws Exception {
Person person = new Person("小明",10001);
person.Speak();
person.run("10");
Method m1 = person.getClass().getMethod("Speak", null);
Method m2 = person.getClass().getMethod("run", String.class);
System.out.println(m1);
System.out.println(m2);
}
}
此例子的运行结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/17/56d9d902a765138eede15cf965fb414a)
在看不明白API文档说什么的时候,自己动手写一个例子就能明白了
该方法的第一个参数name是要获得方法的名字,第二个参数parameterTypes是按声明顺序标识该方法形参类型。
person.getClass().getMethod("Speak", null);
//获得person对象的Speak方法,因为Speak方法没有形参,所以parameterTypes为null
person.getClass().getMethod("run", String.class);
//获得person对象的run方法,因为run方法的形参是String类型的,所以parameterTypes为String.class
如果对象内的方法的形参是int类型的,则parameterTypes是int.class
本人写了一个例子来帮助大家来理解此方法的作用:
Person类:
package fyh.reflectDemo;
public class Person {
private String name;
private int ID;
public String speed;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public Person(String name,int ID){
this.name = name;
this.ID = ID;
}
public void Speak(){
System.out.println("Hello! "+"My name is "+name);
}
public void run(String speed){
System.out.println("I can run " + speed+" KM!!!");
}
}
testMain类:
package fyh.reflectDemo;
import java.lang.reflect.Method;
public class testMain {
public static void main(String[] args) throws Exception {
Person person = new Person("小明",10001);
person.Speak();
person.run("10");
Method m1 = person.getClass().getMethod("Speak", null);
Method m2 = person.getClass().getMethod("run", String.class);
System.out.println(m1);
System.out.println(m2);
}
}
此例子的运行结果:
在看不明白API文档说什么的时候,自己动手写一个例子就能明白了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/899229cfab2c02d614490485cabb781b.gif)
相关文章推荐
- Java反射之Method Class.getMethod(String name, Class<?>... parameterTypes)
- Method Class.getMethod(String name, Class<?>... parameterTypes)
- Method Class.getMethod(String name, Class<?>... parameterTypes)
- Method Class.getMethod(String name, Class<?>... parameterTypes)
- Java 反射中的getDeclaredMethod(String,Class<?>[])与NoSuchMethodExecption
- Method Class.getMethod(String name, Class<?>... parameterTypes)
- Method Class.getMethod(String name, Class... parameterTypes)
- 如何去List<实体>里面实体某个属性相同的数据public class A{ public string Name { get; set; } public string Age { get; se
- 该死的 java.lang.ClassFormatError: Illegal method name "<init>$" 错误
- struts2的<s:iterator>标签 遇到的问题:java.lang.ClassCastException:cannot be cast to java.lang.String
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- java反射(1) 之class.forName(""), 类名.class, 对象.getClass()区别
- java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Action中匹配多个方法使用(通配符*) <action name="role_*" class="roleAction" method="{1}">
- Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- Java反射API研究(3)——java.lang.Class<T>
- 在java开发中关于class.getResourceAsStream(String name)与 class.getClassLoader().getResourceAsStream(String
- java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java
- Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface androi