方法介绍
方法名 | 概述 |
getMethods() | 返回一个Method类型的数组,其中包含所有公共(public)方法。 |
getDeclaredMethods() | 返回一个Method类型的数组,其中包含所有方法。 |
getMethod(String name,Class<?>...parameterTypes) | 返回一个公共的Method方法对象。 |
getDeclaredMethod(String name,Class<?>...parameterTypes) | 返回一个方法Method对象 |
方法使用
修改Users类
public class Users {
private String username;
public int userage;
public Users(){
}
public Users(String username,int userage){
this.username = username;
this.userage = userage;
}
public Users(String username){
this.username = username;
}
public Users(int userage){
this.userage = userage;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public int getUserage(){
return userage;
}
public void setUserage(int userage){
this.userage = userage;
}
public void suibian(){
System.out.println("hello world");
}
}
获取方法
public class GetMethod {
public static void main(String[] args)throws Exception{
Class clazz = Users.class;
Method[] methods = clazz.getMethods();
for(Method m : methods){
System.out.println(m);
System.out.println(m.getName());
}
System.out.println("------------------------------");
Method[] methods2 = clazz.getDeclaredMethods();
for(Method m : methods2){
System.out.println(m);
System.out.println(m.getName());
}
System.out.println("------------------------------");
Method[] method = clazz.getMethod("setUserage",int.class);
System.out.println("------------------------------");
Method[] method1 = clazz.getDeclaredMethod("suibian");
System.out.println(method1.getName());
}
}
调用方法
public class GetMethod2 {
public static void main(String[] args)throws Exception{
Class clazz = Users.class;
Method method = clazz.getMethod("setUsername",String.class);
//实例化对象
Object obj = clazz.getConstructor(null).newInstance();
//通过setUsername赋值
method.invoke(obj,"abc");
//通过getUsername获取值
Method method1 = clazz.getMethod("getUsername");
Object value = method1.invoke(obj);
System.out.println(value);
}
}