簡體   English   中英

具有Servlet會話屬性的多態

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM