私のプロジェクトには次の階層があります。
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()) を呼び出すと、強調されたテキストが期待していたように、それから呼び出される関数は handle(AbstractMessage msg) であり、handle(SubParsedFailedMessage msg) ではありません..
ここでポリモーフィズムが機能しない理由を誰にも言えますか?