есть три arrayList:
private ArrayList<Clothes> clothes = new ArrayList<>();
private ArrayList<Computer> computers = new ArrayList<>();
private ArrayList<Smartphone> 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(???????????????){
}
Максим,
сразу бросилось в глаза, что у вас тип переменно класс, а не интерфейс. Best практика советует использовать как раз-таки интерфейс, например:
private List<Clothes> clothes = new ArrayList<>();
private List<Computer> computers = new ArrayList<>();
private List<Smartphone> smartphones = new ArrayList<>();
Касательно Вашего вопроса, можно использовать generic методологию:
public <T> void searchName(List<T> list)
В вопросе неизвестно являются ли классы Clothes, Computer и Smartphone наследниками какого-то другого класса или интерфейса. Если бы они таки являлись, например:
interface Goods {
int price();
int name();
int amount();
}
class Clothes implements Goods {
...
}
class Computer implements Goods {
...
}
То в таком виде код бы стал более лаконичным: Инициализация:
private static List<Goods> clothes = new ArrayList<>();
private static List<Goods> computers = new ArrayList<>();
Наполнение:
clothes.add(new Clothes());
computers.add(new Computers());
Метод остался бы унифицированным:
public void searchName(List<Goods> list) {
for (Goods entity : list) {
System.out.println(entity.price());
}
}
А вызов метода одинаковый для каждой из коллекций:
searchName(clothes);
searchName(computers);
В худшем случае в варианте с generics можно будет определять какой именно объект пришел, используя instanceof оператор.
Передать вот так:
searchName(ArrayList<Object> objects){
}
Но Вам же нужно организовать поиск в этих массивах?! Тогда вам нужно определить один интерфейс для всех этих классов. Назовем его, например Searchable. В нем опишем функцию getName(). тогда можно будет передавать в функцию параметры так:
Searchable searchName(ArrayList<Searchable> searchableList){
for (Searchable element in searchableList){
if(element.getName() == "My some name")
return element;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день Есть сущность Example с полями: id, name, type, values
У меня есть дата в timestamp форматеКаким образом можно проверить равна ли она текущей дате без учета времени? Например 1502010000 она равна 6
Есть Stream<String>, как разбить его на несколько Stream или List, относительно тех строк, которые начинаются с определенного слова (аналогично split("word")...
В чем разница в поведении в случаях если я устанавливаю hibernateconnection