• Существует ли красивая конструкция для делегирования реализации интерфейса?

    Не совсем понятно, чего вы хотите. Вернее, чего хотите - понятно, непонятно - почему.

    Если вы хотите абсолютно все методы делегировать к инстансу IR - то почему бы вам просто не возвращать инстанс IR через интерфейс I из объекта A - зачем самому A реализовывать I?

    Если же посредничество A все-таки необходимо, то значит, что вы хотите дать этому какую-то смысловую нагрузку. Т.е. раз вам хочется, чтобы A сам реализовал I, то значит вам хочется, чтобы он скрывал факт того, что вызовы на самом деле делегируются к инстансу IR.

    Раз вы хотите, чтобы факт делегирования скрывался от клиента класса A, то вероятно, со временем, вы захотите поменять логику делегирования, и делегировать, например, не к IR, а к другой реализации интерфейса I (иначе зачем вам такое сокрытие факта делегирования к IR). А раз так, то вполне логично, что вы должны явно реализовать методы, делегирующие себя к методам IR.

    К чему я это всё? Конечно, можно себе представить, что код делегирования генерируется автоматически на основе конструкции вроде вашей (implements I by delegate), однако: а) это довольно частный случай, чтобы добавлять в язык синтаксический сахар для этого, плюс наверняка возникнет ряд вопросов реализации, на которые не будет однозначного ответа; б) я думаю такое реализуемо в языках с мощными макросами, но мне приходят в голову только те, которые вы врядли будете использовать, например Nemerle или Lisp. А, ну и на препроцессоре C++ такое можно сделать.
    Ответ написан
    2 комментария
  • Аналог C++11 decltype в других языках программирования?

    tsarevfs
    @tsarevfs
    C++ developer
    Есть в D typeof. В Rust зарезервировали ключевое слово, но пока не реализовано. В Java / Kotlin есть reflection. Но это боле тяжеловесная штука.
    Ответ написан
    2 комментария