我的项目中有以下层次结构:
public abstract class AbstractMessage extends AbstractEntity{}
public class ParseFailedMessage extends AbstractMessage {}
public class SubParsedFailedMessage extends ParseFailedMessage {}
我有以下方法:
public AbstractMessage doHandle(AbstractMessage messageToHandle) {
//prepareToHandle(messageToHandle);
handle(messageToHandle);
//finalize(messageToHandle);
return messageToHandle;
}
@Transactional(readOnly = false)
private void handle(ParseFailedMessage message) {
message.setHandled(false);
}
@Transactional(readOnly = false)
private void handle(AbstractMessage message) {
message.setHandled(true);
}
出于某种原因,当我调用 doHandle(new SubParsedFailedMessage()) 时,从中调用的函数是句柄(AbstractMessage msg) 而不是句柄(SubParsedFailedMessage msg),因为强调的文本是预期的。
谁能说为什么多态在这里不起作用?