我有一个Springbean(ChildBean扩展了父类
),它扩展了一个抽象类(Parent实现了可运行的
)。
public abstract class Parent implements Runnable {
public final void run() {
// some code
}
public int overridenFunct() {
// some code
}
}
导致ClassCastExcture的子类变体:
@Transactional
@Scope("prototype")
@Service("beanName")
public class ChildBean extends Parent {
@Override
public int overridenFunct() {
// some diff code
}
}
在我重写子bean中父类的公共非抽象方法之前,一切都正常。之后,当我试图创建该bean的实例时,会抛出一个ClassCastException。
Parent p = (Parent) appContext.getBean("beanName");
由getBean()
返回的Bean对象是一个ChildBean
类实例(通过调试器检查)。为什么将ChildBean
对象转换为其抽象的父类父
不起作用?因此,如果没有在ChildBean
中实现的overridenFunct()
,一切都很好。有人能告诉我这里有什么问题吗?
更新:
将方法overridingFunct()
更改为protected可修复此问题。但是如果我需要重写一个公共方法呢?允许吗?我正在使用Spring3.2。8.
更新:
好吧,我没有理解为什么在抽象父级中重写公共方法会导致ClassCastException。作为解决方案,我做了以下工作:创建了一个接口,其中包含所有具有公共逻辑的公共方法,一个抽象类,它实现了该接口和所有“公共”方法。然后,所有子bean都从该抽象类扩展,实现其特定逻辑。
代码的问题是,appContext.getBean("beanName")
不返回继承自类父
的对象。
对于名为Parent
的类,一个常见的错误是导入错误。检查是否从正确的包导入。
如果这不能解决问题,请确保appContext.getBean("beanName")
返回您认为返回的对象。它可能会返回一个Bean Object,该对象不继承自父
类。
上下文甚至可能还不包含您的ChildBean对象。确保事先将其添加到其中。
例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g
问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc
调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何
我只是想在java中将一些类对象插入到优先级队列中。但是出现错误“com.java.split.MyComp不能转换为java.util.Collection”。我尝试了不同的选项,将不同的参数传递给, 代码: 导入java。util。比较器;导入java。util。优先队列; 但都没有起作用。我有个例外, 线程“main”java中出现异常。lang.ClassCastException:com
线程“main”java.lang.ClassCastException:java.base/jdk.internal.loader.ClassLoaders$AppClassLoader不能强制转换为java.base/java.net.urlClassLoader(位于org.springframework.boot.devtools.restart.defaultrestartinitial
我模拟了Jsch()类,并在下面的方法中获得了类强制转换异常。 原始方法。 联机获取Mockito异常。 例外情况: java.lang.ClassCastException:com.jcraft.jsch。频道$MockitoMock$1983492043不能转换为com.jcraft.jsch.ChannelSftp 测试用例调用方法。