gpt4 book ai didi

java - Servlet session 属性的多态性

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:42 24 4
gpt4 key购买 nike

我尝试使用多态性来简化对存储在 servlet session 中的对象的处理,但我不断收到 ClassCastException。我正在使用 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}
}

现在,我实例化如下,操作并存储在 session 中。

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

我的问题:有没有办法检索(B)或(C)并运行专门为每个对象实现的每个加载方法?我想做的是使用多态性使我的代码适用于 B 或 C,但某些东西似乎在转换中搞砸了(至少我认为这就是问题所在)。也许还有另一种方法?也许我的选角搞砸了?

最佳答案

Obj 属于 A 类

所以首先你将 Obj 从 A 转换为 A,这就是你得到 As 方法的原因

第二次将父类(super class) A 转换为子类 B。A 不知道 B

关于java - Servlet session 属性的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31623894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com