Инициализацие переменной пользователем java?

Подскажите, пожалуйста, что это значит:

java Program --current-folder=C:/MAIN

возможно это инициализация переменной пользователем, но как в коде сказать, что эта переменная инициализируется при запуске программы?


Ответы (2 шт):

Автор решения: Vestalt

Это не объявление переменной, а передача программе аргумента. Его можно получить из массива args, передаваемого в метод main:

public class Example {
    public static void main(String[] args) {
        System.out.println(args[0]);
    }
}

Команды:

javac Example.java
java Example --current-folder=C:/MAIN

Вывод:

--current-folder=C:/MAIN

Каждый аргумент в массиве записывается в команде через пробел.

Пример использования аргументов:

public class Example {
    private static String currentFolder = "";

    public static void main(String[] args) {
        parseArgs(args);
        System.out.println("Программа запущена с currentFolder = '" + currentFolder + "'");
        // Код
    }

    public static void parseArgs(String[] args) {
        for (String argument : args) {
            String[] splitted = argument.split("=");
            if (splitted.length != 2) {
                System.out.println("Некорректно составлена команда");
                return;
            }
            if (!splitted[0].equals("--current-folder")) {
                System.out.println("Несуществующая команда: " + splitted[0]);
                return;
            }
            currentFolder = splitted[1];
        }

    }
}

Код довольно объёмный, но ручной парсинг выглядит примерно так.

→ Ссылка
Автор решения: ldoctori

Штука, которая избавляет от постоянного парсинга аргументов, называется jcommander (https://mvnrepository.com/artifact/com.beust/jcommander)

Всем спасибо.

→ Ссылка