1

私のプロジェクトには次の階層があります。

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) ではありません..

ここでポリモーフィズムが機能しない理由を誰にも言えますか?

4

2 に答える 2