2012-04-23 12 views
1

私は次のように春の豆を持っている:クラスは別のクラスを拡張し、javaのインターフェイスをこれらのタイプのanydにキャストできますか?

クラスTestBeanセッターで
<bean id="testBean" class="TestBean" 
    ...... 
    <property name="resolver" ref="resolver".... 

class Resolver extends BaseResolver implements IManagementInterface 

public void setResolver (IManagementInterface resolver) { 
this.resolver=resolver; 
... 

しかし、私は実行したときに、私は例外を受け取る:

は、値を変換できません。 Resolver型の必要な型IManagementInteへの変換顔。

ResolverIManagementInterfaceであるため、これは正しくないようです。このエラーの感覚は何ですか?または、すべてのプロジェクトをクリーンインストールする必要がありますか?

+0

''完全な定義を投稿できますか? – Xaerxess

答えて

2

最初にクリーンインストールを行います。これで問題が解消されない場合は、クラスローダーの問題が発生している可能性があります。 Resolverインスタンス(および対応するクラス宣言)がTestBeanとは異なるクラスローダによってロードされた場合、それは別のクラスローダーレルムに属し、したがって(つまりスーパーインタフェースIManagementInterface)はJVMとはまったく異なる型として認識されますIManagementInterfaceのパラメータタイプはTestBean.setResolverです。だから、他の人にキャストすることはできません。

this earlier answer of mineを参照して、これが根本原因であるかどうかを確認する方法。

関連する問題