当前位置: 首页 > 知识库问答 >
问题:

Spring WebFlux类型与Kotlin toMono()不匹配

黄扬
2023-03-14

我收到以下警告:

Type mismatch.
Required: Any
Found: Customer?

当尝试在可空的客户实例上调用toMono()方法时:

@Service
class CustomerServiceImpl @Autowired constructor(
        val customers: ConcurrentHashMap<Int, Customer>
) : CustomerService {
    override fun getCustomer(id: Int): Mono<Customer?> {
        return customers[id].toMono()
    }
}

客户服务:

interface CustomerService {
    fun getCustomer(id: Int): Mono<Customer?>
}

AppConfig:

@Configuration
class AppConfiguration {
    companion object {
        val initialCustomers: Array<Customer> = arrayOf(
                Customer(1, "Jerry"),
                Customer(2, "James"),
                Customer(3, "John")
        )
    }

    @Bean
    fun createCustomers() = ConcurrentHashMap<Int, Customer>(
            initialCustomers.associateBy(Customer::id)
    )
}

当我将CustomService接口中的返回类型定义为非空客户实例(: Mono


共有2个答案

郎睿
2023-03-14

似乎<code>是单声道。JustoEmpty()是我在这里寻找的,仅供参考。这似乎解决了可空对象的问题。

拓拔迪
2023-03-14
匿名用户

您似乎正在使用的 toMono() 扩展定义如下:

fun <T : Any> T.toMono(): Mono<T> = Mono.just(this)

因为< code>T : Any,所以接收方不能为空。

我猜你需要这样的扩展:

fun <T : Any?> T.toMono(): Mono<T> = Mono.justOrEmpty(this)

声明:我甚至没有测试这是否编译。

 类似资料:
  • 它打印出值的等效,这是因为这一行: 通过调用表示。 那么,如何使Hibernate相信是的实例? 我的枚举是由加载的。而由URLClassLoader加载,由另一个类加载器加载。

  • 我在这里复制代码;https://developer.android.com/codelabs/kotlin-android-training-view-model#5 但我从DataBindingUtil中得到了一个类型不匹配。充气方法。正在返回ViewDataBinding!,当需要FragmentPlayBinding时。 我https://github.com/google-develop

  • 问题内容: 编写内部API时遇到以下错误。我正在尝试以以下方式读取值(SQL Server 2012): 现在,虽然看起来有些奇怪,但我以这种方式阅读的原因是因为它是我编写的包装程序的一部分,我们使用它来加快sql的读写速度。它接受一个匿名对象,并根据属性名称或属性名称将所有sql值读入其中。 这适用于除以外的所有内容。我进行了类型比较,它也同样失败,因此很hacky,我什至无法检查该列是否为类型

  • 问题内容: 我正在玩Go,发现一个我无法解决的问题。假设我有如下代码: 我导入了软件包并开始使用它: 我真的很喜欢我的助手“运行”,但是我想使其更加慷慨:我不希望人们总是向我传递MySQL客户端。可以是具有“ RunQuery”和“ Result”方法的任何东西。所以我尝试使用接口: 可悲的是,这不再编译了。我收到此错误: Go不支持此功能吗,或者我做错了什么? 问题答案: 应该返回接口,否则你总

  • 当我想跑的时候: 我得到: 执行操作“MappingAddAction”的服务异常,java.lang.IllegalArgumentException:参数值[5118]与预期的类型[com.vernuso.trust.server.domain.ClientImport.MappingInfo(N/A)]不匹配 有人能帮助我理解为什么它需要类型而不是类型吗? 我有两个表,如下图所示。Mappi

  • 我做错了什么? 正在更新: 我发现了问题所在。问题与ActionRepository中找到的函数有关。函数的签名首先要求两个日期进行比较,然后id和我给出了相反的值。我很清楚,在我上了它之后,我会有一个问题的日期,所以答案确实帮助了我。谢谢大家!