Нет, это не ошибка.
in
Ключевое слово: делает параметр типа контравариантным : его можно использовать только и никогда не создавать.
Возможно, вы запутались из-за другого общего использования ключевого слова in
- внутри цикла.
Вот все места, где можно использовать ключевое слово in
:
- указывает, что объект, повторяемый в цикле for
- используется в качестве инфиксного оператора для проверки того, что значение принадлежит диапазону, коллекции или другому объекту, который определяет метод содержимого
- используется, когда выражения для той же цели
- помечает параметр типа как контравариантный
Ссылки - generics , ключевое слово-reference
Edit 1:
Как уже упоминалось в комментарии, <in Child>
означает, что вы можете передавать дочерние объекты в качестве параметров функции. Но когда он возвращает объекты, как в вашей функции get()
, они обрабатываются так, как будто они Any?
. Ваш код работает, потому что println
принимает Any?
в качестве параметра.