对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变量。
祝学习愉快~
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星