在看struts
中间有这么一段:
1.有一个登陆用 LoginForm 继承自 ActionForm
public class LoginForm extends ActionForm{

   ……
}2.在LoginAaction中处理这个form时,参数form的类型 Actionform 是 LoginForm 的父类,但在程序中为什么能把form强制转化为其子类。public ActionForward execute(ActionMapping mapping,
         ActionForm form, HttpServletRequest request, HttpServletResponse response)
throws Exception 
{         ……
                 LoginForm loginForm=(LoginForm) form;
                 ……                  
}

解决方案 »

  1.   

    ActionForm form=new LoginForm();
    LoginForm loginForm=(LoginForm) form; 
    如果是这样声明的话是可以强转的,如果form中实际存储的是ActionForm的话是不行的。 
      

  2.   

    奇怪,如果是extends的话为什么还要ActionForm form=new LoginForm(); 
    LoginForm loginForm=(LoginForm) form; 
    这样做呢?
      

  3.   

    但是实际上这段代码能运行成功
    是不是在struts框架(struts-config.xml)中,
    <form-beans>
    <form-bean name="LoginForm" type="com.demo.struts.forms.LoginForm"/>
    </form-beans>
    这段话的功能就相当于:
    ActionForm form=new LoginForm(); 
    LoginForm loginForm=(LoginForm) form;
    这段话?
      

  4.   

    在一起写的话自然是多此一举,但有的时候你需要一个LoginForm 对象,上文中已经有form了,也可以转一下后再使用,前提form是ActionForm form=new LoginForm();这样实例化的。
    反正我一般是不这样实例化,用谁实例化谁。接口的也一样。
      

  5.   

    hwy是楼主名字三个字的首字母吗?我的是hyw
      

  6.   

    LoginForm是添加了一些额外的方法
    所以需要强制转化