Есть метод, который заполняет список одним объектом какое-то количество раз. А как сделать чтобы заполнялись разные объекты ? Вот объекты:
Order order1 = new Order(001, 10, "order1", "itemName1", "1");
Order order2 = new Order(002, 20, "order2", "itemName2", "2");
Order order3 = new Order(003, 30, "order3", "itemName3", "3");
//Вот метод:
public ArrayList<Order> useList(Order order, ArrayList list)throws Exception{
if (order == null)
throw new Exception("Order " + order.getId() + " does not exist");
for (int i = 0; i <= 4; i++) {
list.add(order);
}
return list;
}
Этот фрагмент вызовет NullPointerException
при вызове order.getId()
, если order == null
:
if (order == null)
throw new Exception("Order " + order.getId() + " does not exist");
Обычно при проверке входных аргументов на корректность (неравенство null в том числе) не выбрасывают проверяемые исключения - используют непроверяемые (чаще всего это IllegalArgumentException
, NullPointerException
или собственные).
Также небольшие замечания/рекомендации:
1. В методе вы модифицируете переданную коллекцию - нет необходимости возвращать ее обратно.
2. Используйте интерфейсы (методу все равно какую именно из реализаций List
заполнять и вы сможете передавать любую).
public static void useList(List<Order> list, Order[] orders) {
Objects.requireNonNull(list); //throw NullPointerException если list == null
Objects.requireNonNull(orders); //throw NullPointerException если orders == null
list.addAll(asList(orders));
}
public static void main(String[] args) {
Order order1 = new Order(001, 10, "order1", "itemName1", "1");
Order order2 = new Order(002, 20, "order2", "itemName2", "2");
Order order3 = new Order(003, 30, "order3", "itemName3", "3");
List<Order> list = new ArrayList<>();
useList(list, new Order[] {order1, order2, order3});
System.out.println(list);
}
Наверное вам нужно что-то в этом роде (аргумент будет массивом):
public List<Order> useList(List<Order> list, Order... order) throws Exception{
if (order == null)
throw new Exception("Order " + order.getId() + " does not exist");
for (int i = 0; i <= order.length; i++) {
list.add(order[i]);
}
return list;
}
Теперь можно использовать метод так:
Order order1 = new Order(001, 10, "order1", "itemName1", "1");
Order order2 = new Order(002, 20, "order2", "itemName2", "2");
Order order3 = new Order(003, 30, "order3", "itemName3", "3");
useList(new ArrayList<>());
useList(new ArrayList<>(), order1);
useList(new ArrayList<>(), order1, order2);
useList(new ArrayList<>(), order1, order2, order3);
useList(new ArrayList<>(), new Order[] {order1, order2, order3});
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
У меня есть приложение на Java + HibernateМне надо формировать отчёты в ворде
Есть файл KML, при попытке его считать возникает ошибка при приведении объекта documentFeature класса Feature к типу Placemark, так как Placemark является дочерним...
Здравствуйте! Читаю о generic-ах, в качестве примера приводится класс Optional