日期:2014-05-17  浏览次数:20914 次

为什么ServletRequest的对象可以转换为HttpServletRequest对象呢
在Filter中有这样的一个转换
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)

HttpServletRequest req=(HttpServletRequest)request;

ServletRequest是接口
HttpServletRequest是子接口

子对象怎么能转换成父对象了呢?求解



------解决方案--------------------
子对象本来就属于父对象,所以这个转换很正常啊
------解决方案--------------------
引用并不代表对象本身,对象本身有个自己的对象类型(你可以思考一下,接口是不能实例化对象的,但是它可以引用对象),对象本身的类型不会改变,但是引用可以改变。
你可以使用getClass().getName()方法来获得对象的实际类型。