假设我有一个 Java 包...
它有一个主类和主方法,以及一堆其他类......
我的问题是,是否可以从这些不是主类但在同一个包中的其他类中获取传递给主方法的 args 参数...
它有一个主类和主方法,以及一堆其他类......
我的问题是,是否可以从这些不是主类但在同一个包中的其他类中获取传递给主方法的 args 参数...
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]
getArgs()
方法不需要Scratch2
类的对象? - Kasun Siyambalapitiya在一些JRE实现中,system-properties提供了system-property "sun.java.command"来获取启动程序时使用的程序名称和参数,例如:"myjar.jar param1 param2 ..."。
虽然该值甚至不属于文档中提到的属性集之一,但它存在于Oracle-JRE v1.8和OpenJRE v1.8(经过测试)。
我找不到任何文档说明是否默认支持此值(最好能找到的是System#getProperties()文档中的列表)。 欢迎任何关于此事的澄清。请谨慎处理!
我在这方面有点新手,但你应该能够将 string[] args 存储到一个私有实例变量中,然后为其创建一个访问器方法。 例如,
public class test {
private String[] myArgs = new String[10];
public static void main(String[] args) {
myArgs = args;
}
public String[] getArgs() {
return myArgs;
}
}
不确定它是否有效,但这是想法。