Java Для каждого цикла каждый экземпляр из класса

Я начинаю с ООП И у меня есть следующая проблема: я создал новый класс Затем я сделал экземпляр из этого класса Теперь для каждого случая я хочу что-то сделать Я пробовал это с циклом for each, но он не работает... Есть некоторые проблемы с синтаксисом

Это класс:

package main;

public class command
{
    String call;
    String execute;
}

А это из основного класса:

 private static void load() {
        command greeting = new command();

        greeting.call = "hello";
        greeting.execute = "Hello Sir";


        for (command c: command) {
            System.out.println("Another command...");
        }

    }

Я не знаю, как сделать петлю или есть другой способ сделать это?

Чтобы использовать for each, вам нужна какая-то коллекция. Создайте, например, List команд, добавьте 1 или более элементов в этот список и выполните цикл по этому списку.

Robert Kock 29.05.2019 15:43

Чтобы выполнить итерацию, вы должны поместить экземпляры в массив или Iterable контейнер, например. грамм. List

Alex Salauyou 29.05.2019 15:43

@Robert Kock Я знаю, но для этого я должен делать это для каждого экземпляра, а это слишком долго, потому что позже я создам экземпляры из файла xml, а затем у меня будут сотни экземпляров. Чтобы сделать это автоматически, я должен пройти через экземпляры с циклом. И это моя проблема

Tristan K. 29.05.2019 15:50

@ТристанК. см. ответ Бастьена. это совершенно ясно

Robert Kock 29.05.2019 15:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
240
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Синтаксис, который вы используете в цикле for, должен использовать экземпляр класса, реализующего интерфейс Iterable. Например, вы можете использовать реализации интерфейса List.

Например, вы можете попробовать:

private static void load() {
    command greeting = new command();

    greeting.call = "hello";
    greeting.execute = "Hello Sir";

    List<command> listOfCommands = new ArrayList<>();
    listOfCommands.add(greeting);

    for (command c: listOfCommands) {
        System.out.println("Another command...");
    }

}

Я знаю, но для этого я должен сделать это для каждого экземпляра, а это слишком долго, потому что позже я создам экземпляры из файла xml, а затем у меня будут сотни экземпляров. Чтобы сделать это автоматически, я должен пройти через экземпляры с циклом. И это моя проблема. Хорошо, позже, когда я прочитаю их из файла xml, я автоматически помещу их в массив. Спасибо.

Tristan K. 29.05.2019 15:55

Не уверен, что четко понимаете, что вы хотите сделать. Если вы хотите сохранить каждый экземпляр класса, чтобы вы могли легко получить к ним доступ позже, вы можете использовать список static, в который вы добавили бы каждый экземпляр класса при его создании, но я не уверен, что это то, что вы ищешь.

bastantoine 29.05.2019 16:00
Ответ принят как подходящий

Вы можете создать статический список внутри команды класса, к которому добавляются экземпляры в конструкторе(ах). Тогда у вас всегда будут ссылки на любые создаваемые экземпляры.

Вот пример:

import java.util.List;
import java.util.ArrayList;
public class command
{

    String call;
    String execute;

    public static List<command> commands = new ArrayList<>();

    public command() {
        commands.add(this);
    }

    public command(String call, String execute)
    {
        this.call = call;
        this.execute = execute;
        commands.add(this);
    }

    public String toString() 
    { 
        return "call: " + call + " | execute: " + execute;
    } 

}

Класс драйвера:

public class driver
{
    public static void main(String[] args)
    {
        for(int i = 1; i <=10; i++)
        {
            command c = new command("call" + i, "execute" + i);
        }

        for(command cmd: command.commands)
        {
            System.out.println(cmd);
        }
    }
}   

Выход:

Другие вопросы по теме

Похожие вопросы