#java #arraylist
есть три arrayList: private ArrayListclothes = new ArrayList<>(); private ArrayList computers = new ArrayList<>(); private ArrayList smartphones = new ArrayList<>(); есть switch который в зависимости от выбранного передает в метод arraList: switch (checkInt()) { case 1: searchName(clothes); break; case 2: searchName(computers); break; case 3: searchName(smartphones); break;} собственно вопрос: как метод searchName должен принимать arrayList searchName(???????????????){ }
Ответы
Ответ 1
Максим, сразу бросилось в глаза, что у вас тип переменно класс, а не интерфейс. Best практика советует использовать как раз-таки интерфейс, например: private Listclothes = new ArrayList<>(); private List computers = new ArrayList<>(); private List smartphones = new ArrayList<>(); Касательно Вашего вопроса, можно использовать generic методологию: public void searchName(List list) В вопросе неизвестно являются ли классы Clothes, Computer и Smartphone наследниками какого-то другого класса или интерфейса. Если бы они таки являлись, например: interface Goods { int price(); int name(); int amount(); } class Clothes implements Goods { ... } class Computer implements Goods { ... } То в таком виде код бы стал более лаконичным: Инициализация: private static List clothes = new ArrayList<>(); private static List computers = new ArrayList<>(); Наполнение: clothes.add(new Clothes()); computers.add(new Computers()); Метод остался бы унифицированным: public void searchName(List list) { for (Goods entity : list) { System.out.println(entity.price()); } } А вызов метода одинаковый для каждой из коллекций: searchName(clothes); searchName(computers); В худшем случае в варианте с generics можно будет определять какой именно объект пришел, используя instanceof оператор. Ответ 2
Передать вот так: searchName(ArrayList
Комментариев нет:
Отправить комментарий