how2j.cn


工具版本兼容问题
通过反射机制,调用一个对象的方法


步骤 1 : 调用方法   
步骤 2 : 练习-调用方法   
步骤 3 : 答案-调用方法   

首先为Hero的name属性,增加setter和getter
通过反射机制调用Hero的setName
package charactor; public class Hero { public String name; public float hp; public int damage; public int id; public String getName() { return name; } public void setName(String name) { this.name = name; } public Hero(){ } public Hero(String string) { name =string; } @Override public String toString() { return "Hero [name=" + name + "]"; } public boolean isDead() { // TODO Auto-generated method stub return false; } public void attackHero(Hero h2) { // TODO Auto-generated method stub } }
package reflection; import java.lang.reflect.Method; import charactor.Hero; public class TestReflection { public static void main(String[] args) { Hero h = new Hero(); try { // 获取这个名字叫做setName,参数类型是String的方法 Method m = h.getClass().getMethod("setName", String.class); // 对h对象,调用这个方法 m.invoke(h, "盖伦"); // 使用传统的方式,调用getName方法 System.out.println(h.getName()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
步骤 2 :

练习-调用方法

练习难度 edit edit Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
继续上一个练习 练习-通过配置文件获取对象,把hero.config改动成为支持如下格式:

charactor.APHero
garen
charactor.ADHero
teemo


首先根据这个配置文件,使用反射实例化出两个英雄出来。
然后通过反射给这两个英雄设置名称,接着再通过反射,调用第一个英雄的attackHero方法,攻击第二个英雄
package charactor; public class Hero { public String name; public float hp; public int damage; public int id; public String getName() { return name; } public void setName(String name) { this.name = name; } public Hero(){ } public Hero(String string) { name =string; } @Override public String toString() { return "Hero [name=" + name + "]"; } public boolean isDead() { // TODO Auto-generated method stub return false; } public void attackHero(Hero h2) { System.out.println(this.name+ " 正在攻击 " + h2.getName()); } }
package charactor; public class APHero extends Hero { public void magicAttack() { System.out.println("进行魔法攻击"); } }
package charactor; public class ADHero extends Hero { public void physicAttack() { System.out.println("进行物理攻击"); } }
步骤 3 :

答案-调用方法

edit edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法
账号未激活 账号未激活,功能受限。 请点击激活


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 高级-反射机制-调用方法 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图