Прежде всего, я хочу уточнить, что мои вопросы касаются личных предпочтений стиля кода.
Скажем, у меня есть метод, который принимает интерфейс в качестве параметра, и в указанном интерфейсе есть два метода.
В kotlin, реализующем интерфейс анонимно, мы получили бы что-то вроде
client.execute(object : Callback() {
override fun onResponse(response: Response) {/*...*/}
override fun onError(error: Error) {/*...*/}
})
Я хотел бы создать расширения для объекта client
, которые бы имели два разных интерфейса, например
interface ClientResponse{fun onResponse(response: Response)}
interface ClientError{fun onError(error: Error)}
и тогда новый метод execute
будет выглядеть как
client.executeCustom(
{response -> /*...*/},
{error -> /*...*/}
})
что-то вроде решения SAM.
Возможно ли это как-нибудь?