重写 java 个内部方法
Overriding java internals methods
我有一个 class 说 TestEmail
有一个 sendEmail()
方法
现在 sendEmail
方法调用一个 apache 公共方法,该方法在内部调用 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
class 中。可能吗?怎么样?
我认为可以通过扩展三个 类:commons.Email、javax.mail.Transport 和 javax.mail.MimeMessage;并重写它们各自的方法以使用 updateMessageID() 的新行为。
看起来您将覆盖 Email.createMimeMessage(Session) 在您正在使用的电子邮件子类中。然后让 createMimeMessage return 成为 javax.mail.MimeMessage 的子类,覆盖 updateMessageID 以执行您想要的操作。如果您只需要删除用户标识,那么还有其他方法可以做到这一点。请参阅:Override Message-ID by configuration 了解详细信息。
我有一个 class 说 TestEmail
有一个 sendEmail()
方法
现在 sendEmail
方法调用一个 apache 公共方法,该方法在内部调用 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
class 中。可能吗?怎么样?
我认为可以通过扩展三个 类:commons.Email、javax.mail.Transport 和 javax.mail.MimeMessage;并重写它们各自的方法以使用 updateMessageID() 的新行为。
看起来您将覆盖 Email.createMimeMessage(Session) 在您正在使用的电子邮件子类中。然后让 createMimeMessage return 成为 javax.mail.MimeMessage 的子类,覆盖 updateMessageID 以执行您想要的操作。如果您只需要删除用户标识,那么还有其他方法可以做到这一点。请参阅:Override Message-ID by configuration 了解详细信息。