Generics Spring集成Kotlin DSL MessageChannel.publishSubscribe

Generics Spring集成Kotlin DSL MessageChannel.publishSubscribe,generics,kotlin,spring-integration-dsl,Generics,Kotlin,Spring Integration Dsl,我正试图与Kotlin合作,实现Spring与JavaDSL的集成 从GitHub上的Spring Integration Java DSL参考中,我得到了以下代码片段: @Bean public MessageChannel publishSubscribe() { return MessageChannels.publishSubscribe().get(); } 当我试图在Kotlin中重写这篇文章时,它给了我一些问题: 下面的代码段显示了一个错误类型推断失败:没有足够的信息来

我正试图与Kotlin合作,实现Spring与JavaDSL的集成

从GitHub上的Spring Integration Java DSL参考中,我得到了以下代码片段:

@Bean
public MessageChannel publishSubscribe() {
     return MessageChannels.publishSubscribe().get();
}
当我试图在Kotlin中重写这篇文章时,它给了我一些问题:

下面的代码段显示了一个错误
类型推断失败:没有足够的信息来推断参数S

@Bean
fun publishSubscribe(): MessageChannel {
    return MessageChannels.publishSubscribe().get()
}
此代码段引发错误:

类型推断失败:没有足够的信息来推断fun中的参数S!>publishSubscribe():PublishSubscribeChannelSpec! 请明确指定它

因此我将其转换为:

@Bean
fun publishSubscribe(): MessageChannel {
    return MessageChannels.publishSubscribe<String>().get()
}
@Bean
fun publishSubscribe():MessageChannel{
return MessageChannels.publishSubscribe().get()
}
这将引发以下错误:

类型参数不在其范围内:
期望:PublishSubscribeChannelSpec
找到:字符串`

因此,合乎逻辑的做法是替换如下代码:

@Bean
fun publishSubscribe(): MessageChannel {
    return MessageChannels.publishSubscribe<PublishSubscribeChannelSpec<String!>!>().get()
}
@Bean
fun publishSubscribe():MessageChannel{
return MessageChannels.publishSubscribe().get()
}
这是下一个错误:

Kotlin:意外的令牌 Kotlin:意外的令牌

这里的意外标记是感叹号


那么,我可以让它工作吗?

我不知道从您发布此问题到现在可能发生了什么变化,但您的第一个没有类型的示例对我来说很好。