В, который его имплементирует.
Есть метод doSomeShit, который принимает List<A> и есть список List<B> lst. Как мне передать lst в этот метод? Точнее как мне превратить List<B> в List<A>?
Typecast
Как?
(List<A>)(List<?>) listB
Огромнейшее спасибо
Фигасе! А так можно было? А если в общем случае происходит invalid typecast?
А как ты хотел предложить?
Invalid ClassCast Exception?
Создать новый пустой список, пройтись по исходному, сделать каст B в А каждому элементу. По идее, это то же самое, что делает предложенный one-liner. Но в цикле можно подавить случаи invalid typecast и возвращать только правильные элементы.
Если в интерфейсе геттеры, то изменения в исходном списке повлияет на то, что возвращают геттеры, так ведь? Или этот ванлайнер создаёт полностью новый список?
Ну да, будет java.lang.ClassCastException: ... cannot be cast to ..., но в вопросе про проверку элементов условия не было
Он должен вернуть новый список с элементами нового типа. Поправьте, если ошибаюсь.
Понял, спасибо
в приведённом к A будет то, что в A
Ты ошибся) Только что чекнул: он вернул список с ссылками на те же элементы, просто доступны только те методы, что прописаны в интерфейсе А. То бишь изменение элементов списка lstB влияет на то, что возвращают геттеры списка lstA
Да, только что хотел написать, что тип у элементов новый, но под капотом это старые объекты. То есть их при желании можно кастануть к старому типу. Но сам объект списка хотя бы новый? 😏
))
Проверил: как не странно не новый Не ожидал кст
Так. Всё. Мне пора повторять теорию 🤔
Обсуждают сегодня