У меня есть следующий интерфейс NetworkUseCase
, который обрабатывает сетевой запрос. P
- это тип requestData
, а R
- тип responseData
.
interface NetworkUseCase<in P, out R> {
fun process(requestData: P) : R
}
Обычно он используется следующим образом:
class ConcreteUseCase : NetworkUseCase<ConcreteRequestData, ConcreteResponseData> {
override fun process(requestData: ConcreteRequestData): ConcreteResponseData {
...
}
}
// It is called like this
val responseData = ConcreteUseCase().process(requestData)
Однако , в некоторых случаях не требуется requestData . В этом случае аргумент requestData передаваться не должен. Но я не уверен, как этого добиться.
val responseData = ConcreteUseCase().process()
До сих пор я установил для типа requestData значение Unit, но тогда мне все равно нужно передать Unit в качестве параметра:
class ConcreteUseCase : NetworkUseCase<Unit, ConcreteResponseData> {
override fun process(requestData: Unit): ConcreteResponseData {
...
}
}
// It is called like this
val responseData = ConcreteUseCase().process(Unit)
Есть ли способ избежать принудительной передачи аргумента в process()
?