#java #arrays #collections #enumeration
#ява #массивы #Коллекции #перечисление #java
Вопрос:
Я работаю над проектом о шаблонах проектирования с использованием Java. Диаграмма классов перед использованием шаблонов проектирования приведена по ссылке. Поскольку я новичок в Java, некоторые описания методов классов для меня неоднозначны.
Например, в классе с именем, Mall
который имеет метод stores()
, метод stores()
абстрактно описывается как возвращающий «перечисление» магазинов в торговом центре (я использую Java arrays в качестве заполнителя в моем примере кода).
Я хотел бы знать, что может быть «перечислением» в Java, т. Е. Что я должен использовать для конкретного возвращаемого типа? В этом конкретном случае ожидается, что мы будем использовать шаблон проектирования итератора. Пожалуйста, приведите пример, если это возможно.
https://www.dropbox.com/s/kbug0ow3e14284b/DP_Project_1182.pdf?dl=0
public class Mall {
private String mallId;
private Store[] Stores;
private Customer[] customers;
public void enter(Customer c){}
public void exit(Customer C){}
public ShoppingCart getShopingCart()
{
return new ShoppingCart();
}
public Customer[] customers()
{
}
public Store[] stores()
{
}
void addStore(Store S)
{
}
}
Комментарии:
1.
java.util.Enumeration<T>
это интерфейс. Знаете ли вы разницу между интерфейсом и классом в Java? В опубликованном вами коде методstores()
возвращает массивStore
, а не перечисление.
Ответ №1:
Вам нужно создать абстрактный класс с именем Store в соответствии с вашей целью. Чтобы вернуть перечисление типа итератора, я создал список и вернул его элементы в качестве итератора.
Я надеюсь, что этот пример поможет:
public abstract class Store {
private String name;
private Item items;
//..other items
}
public class Mall {
private Store myStore;
//Vector which Stores all Store objects
private List<Store> listOfStores=new LinkedList();
//stores method which returns an Enumeration of Stores*/
public Iterator<Store> stores(){
return listOfStores.iterator();
}
public void addStore(Store s){
listOfStores.add(s);
}
}
Комментарии:
1. Vipul, В дополнение к комментариям Стефана, вопрос, похоже, больше ориентирован на шаблон проектирования, а не на реализацию метода, возвращающего перечислитель. Моя рекомендация, когда вы пытаетесь ответить на вопрос, — быть объективным и интерпретировать вопросы, с которыми вы сталкивались раньше. по заданным вопросам, я думаю, следует следовать рекомендациям, подобным примеру скороговорки: en.wikipedia.org/wiki/Iterator_pattern#Java ! Спасибо за сотрудничество и продолжайте!
2. Спасибо за исправление, Стефан. Заменил устаревший вектор коллекции и перечисление интерфейса списком и итератором.
3. Итератор iter = mall.getCustomerList();