0

サブクラスを同じスーパークラスを持つ別のサブクラスにキャストするにはどうすればよいですか? サブクラスからサブクラスに直接キャストできないことはわかっています。別の方法?ID はスーパークラスに設定されるため、新しいオブジェクトを作成するのは適切ではありません。状態パターンに使用しています。状態が変化すると、クラスのタイプが変化するはずです。

@Entity
public class Request() {}

@Entity
public class OpenRequest extends Request() {}

@Entity 
public class CloseRequest extends Request() {}

ありがとう

4

2 に答える 2

7

これは不可能です。これができれば、すべてのクラスが のサブクラスであるため、他のクラスへの参照をいつでもキャストできますObject
必要なクラスの新しいインスタンスを作成し、情報を手動で転送する必要があります。

于 2012-11-06T14:25:45.510 に答える
1

クラスをキャストするのではなく、クラスのインスタンスへの参照をキャストします。また、あるサブクラスのインスタンスがあり、それを別のサブクラスにキャストすると、実行時エラーが発生することに注意してください。何かをそのままのものにキャストすることしかできません (たとえば、すべての s はs であるため、 anOpenRequestを a としてキャストできます)。それをそうでないものにキャストしようとすると (たとえば、 をとしてキャストする)、失敗します。RequestOpenRequestRequestOpenRequestCloseRequest

于 2012-11-06T14:27:06.673 に答える