【问题标题】:How to call method Reference in map如何在地图中调用方法参考
【发布时间】:2021-09-20 09:22:31
【问题描述】:

我创建了一个类 ApUtils 。在该类中定义两个方法。我想 在地图函数内的服务类中使用这两种方法 方法参考的帮助,但是我在 调用这两个方法 服务.kt

package com.nilmani.reactivespringdemo.services

import com.nilmani.reactivespringdemo.Utils.AppUtils
import com.nilmani.reactivespringdemo.dto.ProductDto
import com.nilmani.reactivespringdemo.entity.Product
import com.nilmani.reactivespringdemo.repository.ProductRepository
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import reactor.core.publisher.Flux
import reactor.core.publisher.Mono


@Service
class ProductService {
    @Autowired
    private lateinit var productRepository: ProductRepository
    fun getProduct():Flux<ProductDto>{
        return productRepository.findAll().map(obj: AppUtils -> obj.entityToDto(product))
    }
    fun getProduct(id:String):Mono<ProductDto>{
        return productRepository.findById(id).map{ obj: AppUtils, product: Product -> obj.entityToDto(product) }
    }
}

AppUtils.kt

package com.nilmani.reactivespringdemo.Utils

import com.nilmani.reactivespringdemo.dto.ProductDto
import com.nilmani.reactivespringdemo.entity.Product
import org.springframework.beans.BeanUtils

class AppUtils {
    fun entityToDto(product: Product):ProductDto{
        val productDto = ProductDto()
        BeanUtils.copyProperties(product,productDto)
        return productDto
    }
    fun dtoToEntity(productDto: ProductDto):Product{
        val product = Product()
        BeanUtils.copyProperties(productDto,product)
        return product
    }
}

如何使用方法参考在我的服务类中调用这两个函数

【问题讨论】:

    标签: kotlin spring-webflux


    【解决方案1】:

    如果您使用 Kotlin 的 object 关键字将 AppUtils 更改为单例:

    object AppUtils { ... }
    

    那么你可以像这样使用方法引用:

    fun getProduct(id:String) = productRepository.findById(id).map(AppUtils::entityToDto)
    

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 2019-01-13
      • 2019-12-18
      • 2017-11-09
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多