覆盖java内部方法

时间:2015-06-03 10:16:34

标签: java inheritance override javax.mail

我有一个班级TestEmail,其中有一个sendEmail()方法

现在sendEmail方法调用一个apache commons方法,该方法在内部调用javax.mail包中的方法。我想覆盖其中一个内部方法。我提供以下代码流程:

TestEmail.sendEmail()->
commons.Email.send()->commons.Email.sendMIMEMessage()->
javax.mail.Transport.send()->javax.mail.Transport(){saveChanges()}-> 
javax.mail.MimeMessage.updateHeaders()->updateMessageID()

我想覆盖updateMessageID方法。在我的TestEmail课程中。可能吗?怎么样?

2 个答案:

答案 0 :(得分:0)

我认为可以通过扩展三个类来实现:commons.Email,javax.mail.Transport和javax.mail.MimeMessage;并重写各自的方法以使用updateMessageID()的新行为。

答案 1 :(得分:0)

看起来你只是覆盖Email.createMimeMessage(Session),其中包含您正在使用的所有子类的电子邮件。然后让createMimeMessage返回一个javax.mail.MimeMessage的子类,它覆盖updateMessageID以执行您想要的操作。如果您只需要删除用户ID,则还有其他方法可以执行此操作。有关详细信息,请参阅:Override Message-ID by configuration