将子类转换为另一个子类

时间:2012-11-06 14:24:20

标签: java java-ee ejb

如何将子类转换为具有相同超类的另一个子类?我知道它不允许直接从子类转换为子类。另一种方式? ID被设置为超类,因此制作新对象并不好;我用它来表示状态模式。如果状态发生变化,那么班级的类型应该改变。

@Entity
public class Request() {}

@Entity
public class OpenRequest extends Request() {}

@Entity 
public class CloseRequest extends Request() {}

由于

2 个答案:

答案 0 :(得分:7)

这是不可能的。如果你可以这样做,你总是可以对任何其他类进行任何引用,因为所有类都是Object的子类。
您必须创建所需类的新实例,并手动传输信息。

答案 1 :(得分:1)

您没有强制转换类,而是对类的实例进行转换。请注意,如果您有一个子类的实例并将其强制转换为另一个子类,则会导致运行时错误。您只能投放某些内容(例如,您可以将OpenRequest投射为Request,因为所有OpenRequest都是Request s);如果你试图把它变成不是它的东西(例如,将OpenRequest作为CloseRequest),那就会失败。