什么是反射? 反射就是在程序运行的过程中,可以动态的获取类信息,以及类的相关方法,反射的用处很多,比如Spring中bean的加载过程,动态代理等都用到了反射。既然有反射,那肯定有正射,正射就是我们平时通过new的方式创建一个对象的过程。
一、反射的思想及作用
为什么需要反射,其实还是为了我们平时写代码的灵活性,假设我们现在要对一个班的同学进行排名,可以根据学习成绩来排,也可以根据年龄,体重,身高等来排序,对于不同的场景,我们的排序方式可能会不同,如果要评选三好学生,可能会根据学习成绩来排名,如果是在上体育课,可能会根据身高高低来排。
如果没有反射,我们可能为了满足不同的场景,每次都的改代码,这样边很麻烦,以后要是新增同时按身高和体重来排,我们还需要修改原有的代码,会使代码的耦合性特别强,满足了当前排序方式,可能会影响其他的排序方式。碰到此类情况,我们肯定想到的是用多个if来进行判断,然后获取对应的排序方式
public List<Student> rankOfStudent(String param, List<Student> student){
if(StringUtils.equals(param, "rankByAge"){
return RankByAge(student);
}else if(StringUtils.equals(param, "rankByAge"){
return RankByScore();
}
}
public Inteface RankStrategy{
List<Student> rank();
}
public RankByAge implements RankStrategy{
public List<Student> rank(List<Student> student){
//按照年龄排序
}
}
public RankByScore implements RankStrategy{
public List<Student> rank(List<Student> student){
//按照成绩排序
}
}
随着我们的排序方式不断的增多,rankOfStudent里的逻辑会异常复杂&#