https://kotlinlang.org logo
Title
j

jlleitschuh

06/05/2017, 9:11 PM
If I have a kotlin interface like this:
interface IncomingJsonMessageHandler {
    operator fun invoke(methodName: String, arg: String): String
}
Is this really the only good way to declare the constructor so that I can use it both for DI and as a lambda in tests is to do this goofyness:
class IncomingRPCHandler
@Inject constructor(
    private val connectionProvider: ConnectionProvider,
    private val incomingJsonMessageHandler: IncomingJsonMessageHandler) {

    internal constructor(
        connectionProvider: ConnectionProvider,
        incomingJsonMessageHandler: (String, String) -> String) :
        this(connectionProvider, object : IncomingJsonMessageHandler {
            override fun invoke(methodName: String, arg: String): String = incomingJsonMessageHandler(methodName, arg)
        })
b

benleggiero

06/11/2017, 7:46 PM
I'd go for a
typealias
then