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

您不投射类,而是投射对类实例的引用。请注意,如果您有一个子类的实例并将其转换为另一个子类,则会导致运行时错误。您只能将某物转换为它本来的样子(例如,您可以将 an 转换OpenRequest为 a Request,因为所有OpenRequests 都是Requests);如果您尝试将其转换为不是的东西(例如,将 an 转换OpenRequest为 a CloseRequest),那将失败。

于 2012-11-06T14:27:06.673 回答