Я знаю, что перегрузкой это то, что решается во время компиляции, но когда я пытаюсь запустить пример ниже его дает мне результат, который я не могу понятьКоллекция перегрузки для различных типов коллекций
package miscellaneous;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class CollectionsOverloading {
public static String classify(Set<?> s) {
return "Set";
}
public static String classify(List<?> s) {
return "List";
}
public static String classify(Collection<?> s) {
return "Collection";
}
public static void main (String args[]) {
Collection<?>[] collections = { new HashSet<String>(), new ArrayList<String>(), new HashMap<String, String>().values()};
for (Collection<?> coll : collections) {
System.out.println(classify(coll));
}
}
}
Когда я запускайте этот фрагмент кода каждый раз, я получаю вывод как «Коллекция», что означает, что вызывается метод классификации с аргументом как Collection.
Пожалуйста, объясните