Проблема несовместимых типов при компиляции - void для MimeMessage - PullRequest
0 голосов
/ 08 января 2020

Я столкнулся с проблемой при компиляции моего приложения, ошибка: 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 в сообщении об ошибке, так как мои методы возвращают указанные типы. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 08 января 2020

getEmailService().(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());

должно быть:

getEmailService().parseEmail(parseEmailRequest.getFileName(), parseEmailRequest.getFileContent());

Вы не предоставили много контекста для своего кода, но, как я предполагаю, вы намереваетесь создайте объект message в EmailService. getEmailService() возвращает вам экземпляр объекта EmailService, который затем позволяет вам вызвать метод parseEmail(). Обратите внимание, что если EmailService задан как фабричный класс, другие классы не смогут использовать его методы, если они используют модификатор publicity private.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...