Как получить метод для получения и добавления новых объектов в ArrayList?

#java #arraylist

#java #arraylist

Вопрос:

Я только недавно начал изучать код, поэтому простите меня, если это тривиально, но я, кажется, не могу понять, это простое назначение для класса. Здесь мой профессор дал нам это и сказал мне создать класс проверки самостоятельно. Мой вопрос в том, как я мог бы создать enterItem метод в классе checkout для добавления объектов «rice» и «baguette» в ArrayList?

 public static void main(String[] args) {

        Checkout checkout = new Checkout();

        checkout.enterItem(new Rice("Basmati Rice", 2.25, 399));
        checkout.enterItem(new Baguette("Wheat Baguette", 105));
 

Это вроде того, что я пробовал, но это не работает, и я не уверен, почему или как заставить это работать

 public class Checkout {
       
    ArrayList items = new ArrayList();
    
    public void enterItem(){
        items.add()
    }
}
 

Комментарии:

1. docs.oracle.com/javase/tutorial/java/javaOO/arguments.html

2. Производите свои продукты из общего Food интерфейса или абстрактного класса и используйте метод следующим образом: public void enterItem(Food food) {items.add(food);}

3. Должен ли список массивов в Checkout классе быть необработанным в вашем назначении?

4. «Должен ли список массивов в классе проверки быть необработанным в вашем назначении?» — @AlexRudenko Что для вас значит, что класс должен быть «сырым»?

Ответ №1:

 checkout.enterItem(new Rice("Basmati Rice", 2.25, 399));
 

Этот код вызывает enterItem метод и передает a Rice в качестве аргумента.

 public void enterItem(){
    items.add()
}
 

enterItem Метод не принимает никаких аргументов, так что это не сработает. Вы могли бы сделать это…

 public void enterItem(Rice rice){
    items.add(rice);
}
 

Это будет работать для Rice , но не для Baguette (если Baguette не расширяется Rice ). Вы могли бы добавить 2 версии enterItem :

 public void enterItem(Rice rice){
    items.add(rice);
}

public void enterItem(Baguette bag){
    items.add(bag);
}
 

Если Rice и Bagquette разделяют что-то над ними в иерархии наследования / реализации, может сработать что-то вроде этого:

 public class Baguette implements Edible {}


public class Rice implements Edible {}


public void enterItem(Edible edible){
    items.add(edible);
}