Нет, не переносимо, могут быть некоторые хитрости, основанные на реализации JVM, но я никогда не видел это, и было бы очень плохой идеей полагаться на него, даже если бы он существовал.
Еслиесли вы хотите получить эти значения в другом месте, функция main
должна как-то сделать их доступными.
Простой способ сделать это (не обязательно способ best ) - просто сохранитьуберите строки как первое, что есть в main
, и предоставьте средства для их получения:
Scratch2.java:
public class Scratch2 {
// Arguments and accessor for them.
private static String[] savedArgs;
public static String[] getArgs() {
return savedArgs;
}
public static void main(String[] args) {
// Save them away for later.
savedArgs = args;
// Test that other classes can get them.
CmdLineArgs cla = new CmdLineArgs();
cla.printArgs();
}
}
CmdLineArgs.Java:
public class CmdLineArgs {
public void printArgs() {
String[] args = Scratch2.getArgs();
System.out.println ("Arg count is [" + args.length + "]");
for (int i = 0; i < args.length; i++) {
System.out.println ("Arg[" + i + "] is [" + args[i] + "]");
}
}
}
И, при запуске с аргументами a b c
, это выводит:
Arg count is [3]
Arg[0] is [a]
Arg[1] is [b]
Arg[2] is [c]