我有一个方法(prepareErrorMessage),该方法接受ErrorMessagePojoSuperclass类型的对象。但是,我仅将ErrorMessagePojoSuperclass的子类作为参数传递:
public class ErrorMessagePojoBundle extends ErrorMessagePojoSuperclass {}
public class Tester {
ErrorMessagePojoBundle empb = new ErrorMessagePojoBundle();
prepareErrorMessage(empb);
public void prepareErrorMessage(ErrorMessagePojoSuperclass errorMessagePojo) {
String errorStatusMsg = messageConverter.convertXMLToString(errorMessagePojo);
}
}
ErrorMessagePojoBundle类比其超类具有更多的方法。
我需要确保在代码行运行messageConverter.convertXMLToString(errorMessagePojo)
时,messageConverter处理子类的实例-在这种情况下为对象empb。有任何想法吗?我想在不使用强制转换的情况下解决此问题。谢谢。
答案 0 :(得分:1)
有什么想法吗?我想在不使用强制转换的情况下解决此问题。
您的选择是:
instanceof
和强制转换(通常不是您想要执行的操作)。1和2基本上只是彼此的变体。
在您的示例代码中,prepareErrorMessage
没有理由接受超类而不是子类(或接口),因为只有 可以使用子类(或实现相同接口的东西)。