java反射机制 问题
如果有两个类A和B
B继承于A,
A:有字段name 以及getName和setName
B:有AGE 以及get和set方法
怎么使用反射机制获取所有的方法。。并且设置age或者name的值。。。然后调用get方法???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如果有两个类A和B
B继承于A,
A:有字段name 以及getName和setName
B:有AGE 以及get和set方法
怎么使用反射机制获取所有的方法。。并且设置age或者name的值。。。然后调用get方法???
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(16)
回复
有点长,在下面回复了。
原理能讲讲吗???
Java的get方法分两种,boolean类型命名规则是isXxx(字段名首字母大写),其他类型的是getXxx,get方法的参数长度为0。
遍历所有public方法(class.getMethods),根据这两个命名规则就可以把所有get方法找到,当然特殊情况先不考虑。
Java的set方法只有一种,命名规则是setXxx,set方法的参数长度为1,返回值为void。和get方法一样可以把所有set方法找到。
把它们以字段名为键,get、set方法为值放入Map中,这样就可以通过字段名找到对应的方法了,用Method.invoke调用方法即可获取、设置对应的字段值。
你要的是这样的效果?
引用来自“英强”的评论
看main函数,这能满足你的需求吗?
引用来自“英强”的评论
看main函数,这能满足你的需求吗?
@英强 能举个例子吗???
引用来自“英强”的评论
看main函数,这能满足你的需求吗?
回复
举例子前要有前提,先把前提说明了才行。像你的问题里,如果都知道B这个类了,其实就没必要用反射。
回复
假设不知道有那个方法。。然后反射出set方法。。。然后调用get
引用来自“英强”的评论
看main函数,这能满足你的需求吗?
引用来自“英强”的评论
看main函数,这能满足你的需求吗?
看main函数,这能满足你的需求吗?
还准备码一下回忆下decleared什么的,有工具就算了…
这个是获取值吗???配置文件里面的值???
1.Class c= Class.forName("B");
B b = (B)c.newInstance();
2.通过c.getMethod(name,parameterTypes)获得方法,返回的是Method对象(method)
3.调用:method.invoke(b,参数列表)
好像是这样的