1、反射的好处是:可以在运行时确认对象以及方法。
2、下面举个简单的例子来说下反射的运用场景:
假如一款游戏有一个配置文件,配置文件里有个renderType设置了游戏启动时调用哪个RenderHandler来渲染游戏,
(RenderHandler:一个接口,有一个render方法,HighRenderHandler、LowRenderHandler、MiddleRenderHandler等一共10个实现类)
那么游戏启动时必须获得一个RenderHandler来渲染游戏,现在有两种方式,一种是使用switch判断
//首先获得配置文件里的renderType switch(renderType){ case "low":renderHandler=new LowRenderHandler(); case "high":renderHandler=new HighRenderHandler(); case "middle":renderHandler=new MiddleRenderHandler(); case "a":renderHandler=new ARenderHandler(); case "b":renderHandler=new BRenderHandler(); case "c":renderHandler=new CRenderHandler(); case "d":renderHandler=new DRenderHandler(); case "e":renderHandler=new ERenderHandler(); case "f":renderHandler=new FRenderHandler(); case "g":renderHandler=new GRenderHandler(); default:renderHandler=new LowRenderHandler(); } renderHandler.render();
另一种是使用反射:
//首先从配置文件里获得renderType RendeHandler renderHandler=(RendeHandler)Class.forName(rederType).newInstance(); renderHandler.render();
3、switch用了14行代码,而反射只使用了2行代码,现实中可能见不到这么傻的例子,但是这确实有助于理解反射。