[英]Polymorphism with servlet session attribute
我正在嘗試使用多態來簡化對存儲在Servlet會話中的對象的處理,並且不斷獲取ClassCastExceptions。 我正在使用Struts框架(1.3.10和Struts 2)
我有以下幾點:
class A{
// fields omitted
A{ // initialize}
load{ //- no implementation }
// getters + setters
}
class B extends A{
// fields omitted
B { // initialize }
@Override
load{ // specific implementation}
}
class C extends A{
// fields omitted
C { // initialize }
@Override
load{ // specific implementation}
}
現在,我實例化如下,在會話中進行操作和存儲。
A obj = new B();
//-- manipulate and load fields here
request.getSession().setAttribute("obj", obj);
稍后,我要檢索此對象。
A laterObject = (A) request.getSession().getAttribute("obj");
//fails to give me B's load() implementation. Same issue for C's load() implementation.
我也試過
A laterObject = (B) request.getSession().getAttribute("obj");
// ClassCastException
我的問題:有沒有辦法檢索EITHER(B)或(C)並運行專門為每個對象實現的每種加載方法? 我想做的是使用多態性將我的代碼應用於B或C,但是某些東西似乎在轉換中搞砸了(至少我認為是問題所在)。 也許還有另一種方法? 也許我的演員陣容搞砸了?
Obj是A級
因此,首先將Ob轉換為A到A,這就是為什么要獲取As方法的原因
第二次將父類A轉換為子類B。A不了解B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.