Как реализовать функцию, которая возвращает «перечисление» объектов?

#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();