java反射getmethod(java getMethod方法和invoke方法(看代码))

本文目录
- java getMethod方法和invoke方法(看代码)
- 用eclipse编写反射案例,getMthod();和invoke();方法不能正常使用问题可能除出在哪
- java反射中getDeclaredMethods和getMethods的区别
- java 获取方法调用者 的参数
java getMethod方法和invoke方法(看代码)
不纠结过多的细节的话,等价。
“巧妇难为无米之炊”在这句话说明了java里大多数方法调用的必要内容:
巧妇(谁)、为炊(干很么)、米(干活的原材料,非必需)
1、a.getName()
知道“巧妇(a)”,知道“为炊(getName)”
总结:【“巧妇”做“为炊”这件事】
2、a.getClass().getMethod("getName").invoke(a.getClass().newInstance())
1)a.getClass().getMethod("getName")
“为炊(getName)”的另一个说法
2)a.getClass().newInstance()
有“为炊”没用,还得找个“巧妇”,这句就是干这个的
3)invoke
牵个线
总结:【“为炊”这件事“invoke”帮你找个“巧妇”来做】
不要纠结,既然你还困惑这两个的差异,那就说明你还没到需要了解的时候。
用eclipse编写反射案例,getMthod();和invoke();方法不能正常使用问题可能除出在哪
package itHeiMaTestz2;
import java.lang.reflect.Method;
public class Reflect {
@SuppressWarnings("unchecked")
public static void main(String args) {
Student st = new Student();
System.out.println(getValueByPropertyName("Id",st));
}
static Object getValueByPropertyName(String propertyName,Object object){
Class c=object.getClass();
String methodName ="get"+propertyName.substring(0,1).
toUpperCase()+propertyName.substring(1);
try {
Method m=c.getMethod(methodName, new Class{});//这个函数第一个参数该类对应的方法名,第二个参数是 方法的参数类型
return m.invoke(object,new Object{});//invoke()
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
//第二个类
package itHeiMaTestz2;
public class Student {
String name;
int id;
char sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public Student(String name, int id, char sex) {
this.name = name;
this.id = id;
this.sex = sex;
}
public Student(){}
}
java反射中getDeclaredMethods和getMethods的区别
主要区别:
1,getDeclaredMethods能拿到所有(不包括继承的方法);
2,getMethods只能拿到public方法(包括继承的类或接口的方法)
其他都一样。
java 获取方法调用者 的参数
区分是调用哪个test是由你调用的时候的参数决定的。
例如:调用时test(1),那么你调用的是
test(int i){
new A().getMethod();
}
这个方法
如果调用的时候是test("str")调用的就是
test(String i){
new A().getMethod();
}
了。

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30



