Возможно, так как оба типа реализуют Collection<E>
. Соглашение для типов классов в Java должно начинаться с заглавной буквы. Начиная с 1.5, Java использовала generics для своих коллекций, и вы должны использовать их во всем новом коде. Поскольку вы используете цикл for
в стиле 1.5, вы должны написать общий код.
Обычно лучше сделать так, чтобы функции работали с наименее конкретным типом, насколько это возможно, так как это дает самое широкое повторное использование. В этом случае вам нужно только то, что может подняться с Collection<T>
до Iterable<T>
, поскольку вам нужно только то, что будет работать с циклом for. Таким образом, сочетание дженериков и наименьшей мощности дает:
public class PrintLinePrinter {
public <T> void print (Iterable<T> collection) {
for (T item : collection) {
System.out.println(item);
}
}
}