对Employee对象本身做修改为什么要用另外一个新对象接收呢
问题描述:
Employee类中的updateSalary方法改变了this对象本身的薪水
public Employee updateSalary(Float val){ this.salary = this.salary + val; System.out.println(this.ename + "调薪至" + this.salary + "元"); return this; }
Class employeeClass = Class.forName("com.imooc.reflect.entity.Employee"); Constructor constructor = employeeClass.getConstructor(new Class[]{ Integer.class,String.class,Float.class,String.class }); Employee employee = (Employee)constructor.newInstance(new Object[]{ 100,"李磊",3000f,"研发部" }); Method updateSalaryMethod = employeeClass.getMethod("updateSalary" , new Class[]{ Float.class }); Employee employee1 = (Employee)updateSalaryMethod.invoke(employee,new Object[]{1000f}); System.out.println(employee1);
也就是说当对象“李磊”调用updateSalary方法以后,他自己的薪水就自动增加到了4000,所以为什么不用对象“李磊”本身去接收invoke方法,而是要新开辟一个Employee对象去接收呢?
employee = (Employee)updateSalaryMethod.invoke(employee,new Object[]{1000f}); System.out.println(employee);
11
收起
正在回答
1回答
同学你好,这里是可以用employee变量接收而不用employee1的,同学可以注释掉toString方法来打印两个对象的地址,实际上是相同的。
课程中老师的重点是演示invoke方法的使用,因为返回对象不是重点,所以没有将对象赋值回employee变量。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星