我在编译应用程序时遇到问题,错误是:incompatible types: void cannot be converted to javax.mail.internet.MimeMessage
它出现在代码的这一部分:
getEmailService().parseEmail(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());
方法如下:
private EmailService getEmailService() {
return new EmailService();
}
和
public MimeMessage parseEmail(String fileName, Part fileContent) {
return getParseEmailUseCase()
.withEmailFileStorage(getEmailFileStorage())
.withFilePathBuilder(getFilePathBuilder())
.withEmailParser(getEmailParser())
.withFileName(fileName)
.withFileContent(fileContent)
.run();
}
这很奇怪,因为我希望它作为一个变量message
private void setEmailMessage(ParseEmailRequest parseEmailRequest) {
message = getEmailService()
.parseEmail(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());
}
message
是一个字段
private MimeMessage message;
这是我收到错误并且删除message
并仅保留时:
getEmailService().parseEmail(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());
程序已编译。更重要的是,当我使用我的IDE(intellij(为上面的代码分配一个变量时,MimeMessage
会自动选择,这意味着getEmailService().parseEmail(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());
会按照我想要的方式返回MimeMessage
。
以上都是在课堂EmailHandler
中快乐的。
我不明白错误消息中的void
来自哪里,因为我的方法返回指定的类型。我在这里错过了什么?
getEmailService().(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());
应该是:
getEmailService().parseEmail(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());
您没有为代码提供太多上下文,但根据我的假设,您打算在EmailService
中创建message
对象。getEmailService()
将一个实例返回到对象EmailService
然后允许您调用parseEmail()
方法。请注意,如果EmailService
旨在作为某种工厂类,则其他类在使用 publicity 修饰符private
时将无法使用其方法。