Я являюсь автором некоторой библиотеки с открытым исходным кодом. Один из общедоступных интерфейсов имеет методы, которые используют необработанные типы, например Collection
, например:
public StringBuilder append(..., Collection value);
Я получаю Collection is a raw type. References to generic type Collection<E> should be parameterized
Collection is a raw type. References to generic type Collection<E> should be parameterized
предупреждениями.
Я думаю об исправлении этих предупреждений. Реализации фактически не заботятся о типах элементов в коллекциях. Поэтому я думал о замене Collection<?>
.
Однако эти методы являются частью публичного интерфейса моей библиотеки. Клиентский код может вызывать эти методы или обеспечивать собственные реализации этих открытых интерфейсов, реализуя таким образом эти методы. Я боюсь, что изменение Collection
to Collection<?>
Приведет к поломке клиентского кода. Вот мой вопрос.
Если я изменю Collection
→ Collection<?>
В моих общедоступных интерфейсах, это может привести к:
- ошибки компиляции в клиентском коде?
- ошибки времени выполнения в уже скомпилированном существующем клиентском коде?