Вы используете условное выражение: вы не можете иметь выражение throw
как его часть. Это первая проблема.
Вторая проблема заключается в том, что вам нужно вызвать исключение, чтобы ваше текущее выражение, использующее условное выражение, не работало, если вы не используете блок:
handler.setFileNameGenerator(message -> {
if (message.getPayload() instanceof File) {
return ((File) message.getPayload()).getName();
} else {
throw new IllegalArgumentException("File expected as payload.");
}
});
Что больше похоже на копирование / вставку вашего анонимного класса ...
В качестве альтернативы, вы можете использовать Optional для его очистки:
handler.setFileNameGenerator(message -> Optional.of(message.getPayload())
.filter(p -> p instanceof File)
.map(f -> (File) f)
.map(File::getName)
.orElseThrow(() -> new IllegalArgumentException("File expected as payload.")));