У меня есть класс MyClass
, который использует то же имя метода для перегрузки:
public class MyClass {
void add(Integer val) {
// ...
}
void add(Boolean val) {
// ...
}
}
Теперь я хотел бы расширить этот класс дополнительным методом add
, который принимает Collection<..>
. Тем не менее, внутренний тип коллекции должен передаваться в качестве параметра уже реализованному add
.
public class MyClass {
void add(Integer val) {
// ...
}
void add(Boolean val) {
// ...
}
void add(Collection<Object> value) {
for (Object v : value) {
add(v); // <-- ERROR here
}
}
}
. При запуске этого происходит сбой с error: no suitable method found for add(Object)
. Я делаю понимаю почему это не работает. Итак, мой вопрос, как мне указать Collection<..>
таким образом, что:
«Принять коллекцию, в которой ее внутренний тип имеет подходящий add
метод»
Большое спасибо.
--- EDIT ---
Единственное жизнеспособное решение, которое можно найти, это:
void addIntegers(Collection<Integer> value) {
for (Integer v : value) {
add(v);
}
}
void addBooleans(Collection<Boolean> value) {
for (Boolean v : value) {
add(v);
}
}