Я надеялся создать чистый код, который может рекурсивно выкапывать в коллекцию и печатать первое целое, которое он находит. Исходя из фона C++, этот подход выглядел так:Статический полиморфизм с дженериками в Java
class Test {
static void print(Integer i) {
System.out.println(i);
}
static <T> void print(ArrayList<T> arr) {
T entry= arr.at(0);
Test.print (entry);
}
static void Test() {
ArrayList<ArrayList<Integer>> arrayOfArrayOfInt= create();
print(arrayOfArrayOfInt);
}
}
К сожалению, это не сработало.
Одним из альтернатив является отказ от статического полиморфизма и создание функции print (Object o), а затем выполнение ряда проверок instanceof для перехода в правильное поведение. Это единственный способ сделать это из-за стирания стилей Java или есть более элегантный подход?
Можете ли вы уточнить, как он не работает? –
Легче сфокусироваться на поведении полиморфизма, если вы можете вырезать посторонние ошибки ('get()' vs 'at()', отсутствующий 'create()', отсутствующие импорт) и опубликовать пример компиляции. Вот версия, которую я должен запустить; Я думаю, что это делает проблему отправки немного более ясной. https://gist.github.com/apjanke/aa8583e2f36c0955589c –
Извините за неправильное имя метода. Я намеренно пропустил create(), потому что он добавляет много шума. Спасибо, что создали суть. –