Я бы хотел быть более откровенным в отношении своих замыканий относительно их типов аргументов.Поэтому я написал бы что-то вроде
List<Y> myCollect(List<X> list, Closure<X,Y> clos) { ... }
Я знаю, что Groovy не будет использовать эту информацию о типах, но Groovy ++ может использовать ее во время компиляции.Может ли это быть достигнуто (кроме размещения в комментариях)?
ОБНОВЛЕНИЕ: Название может показаться вводящим в заблуждение, но я подумал, что приведенный выше пример сделает его более понятным.Я заинтересован в указании типов замыкания, которое является аргументом некоторой функции.Предположим, я хочу переопределить встроенный collect
.Поэтому я заинтересован в написании myCollect
, а не в написании clos
.Чего я хочу добиться, так это получить ошибки времени компиляции
myCollect(['a', 'ab'], { it / 2 }) // compile error
myCollect(['a', 'ab'], { it.size() }) // OK