如何将子类转换为具有相同超类的另一个子类?我知道它不允许直接从子类转换到子类。另一种方式?ID被设置为超类,所以不适合创建新对象;我将它用于状态模式。如果状态改变,那么类的类型应该改变。
@Entity
public class Request() {}
@Entity
public class OpenRequest extends Request() {}
@Entity
public class CloseRequest extends Request() {}
谢谢
如何将子类转换为具有相同超类的另一个子类?我知道它不允许直接从子类转换到子类。另一种方式?ID被设置为超类,所以不适合创建新对象;我将它用于状态模式。如果状态改变,那么类的类型应该改变。
@Entity
public class Request() {}
@Entity
public class OpenRequest extends Request() {}
@Entity
public class CloseRequest extends Request() {}
谢谢
这是不可能的。如果你能做到这一点,你总是可以将任何引用转换为任何其他类,因为所有类都是Object
.
您必须创建所需类的新实例,并手动传输信息。
您不投射类,而是投射对类实例的引用。请注意,如果您有一个子类的实例并将其转换为另一个子类,则会导致运行时错误。您只能将某物转换为它本来的样子(例如,您可以将 an 转换OpenRequest
为 a Request
,因为所有OpenRequest
s 都是Request
s);如果您尝试将其转换为不是的东西(例如,将 an 转换OpenRequest
为 a CloseRequest
),那将失败。