Да, это возможно. Под каждым из них можно добавить другой класс с основным методом для того, который выполняет требуемый класс / метод на основе аргумента.
* 1003 Е.Г. *
public static void main(String... args) {
if ("foo".equals(args[0])) {
Foo.main(args);
} else if ("bar".equals(args[0])) {
Bar.main(args);
}
}
(не забудьте самостоятельно добавить очевидные проверки, такие как args.length
и т. Д.)
Который вы можете использовать следующим образом:
java -jar YourJar.jar foo
При правильной разработке это может сделать метод main()
других классов излишним. Э.Г.
public static void main(String... args) {
if ("foo".equals(args[0])) {
new Foo().execute();
} else if ("bar".equals(args[0])) {
new Bar().execute();
}
}
Чтобы абстрагироваться от этого больше (чтобы избавиться от блоков if / else), вы можете рассмотреть возможность реализации им интерфейса Action
с void execute()
и овладеть им в Map
:
private static Map<String, Action> actions = new HashMap<String, Action>();
static {
actions.put("foo", new Foo());
actions.put("bar", new Bar());
}
public static void main(String... args) {
actions.get(args[0]).execute();
}