如何将子类转换为具有相同超类的另一个子类?我知道它不允许直接从子类转换为子类。另一种方式? ID被设置为超类,因此制作新对象并不好;我用它来表示状态模式。如果状态发生变化,那么班级的类型应该改变。
@Entity
public class Request() {}
@Entity
public class OpenRequest extends Request() {}
@Entity
public class CloseRequest extends Request() {}
由于
答案 0 :(得分:7)
这是不可能的。如果你可以这样做,你总是可以对任何其他类进行任何引用,因为所有类都是Object
的子类。
您必须创建所需类的新实例,并手动传输信息。
答案 1 :(得分:1)
您没有强制转换类,而是对类的实例进行转换。请注意,如果您有一个子类的实例并将其强制转换为另一个子类,则会导致运行时错误。您只能投放某些内容(例如,您可以将OpenRequest
投射为Request
,因为所有OpenRequest
都是Request
s);如果你试图把它变成不是它的东西(例如,将OpenRequest
作为CloseRequest
),那就会失败。