鉴于:
public class MyClass {
static {
// Access to args is needed here
}
public static void main(String[] args) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想在上面提到的静态块中访问args.
我知道静态块是在类加载(或初始化)时和静态main函数之前执行的,但仍然想知道是否可以访问它的args.
顺便说一句 - 我的最终目标是在配置log4j之前在运行时追加日志文件的名称(使用从传递给main的其中一个参数派生的系统属性变量).
您无法从静态块访问 main 的参数。相反(或另外)将参数传递给 main,我建议您使用系统参数,例如:
java -Dmyvar=value ...
Run Code Online (Sandbox Code Playgroud)
并在静态块中访问它,例如
static {
String parameterValue = System.getProperty("myvar");
...
}
Run Code Online (Sandbox Code Playgroud)
有一个特殊的系统属性“sun.java.command”,其中包含整个命令行。
这是一个例子:
static {
System.out.println(System.getProperty("sun.java.command"));
}
Run Code Online (Sandbox Code Playgroud)
当我使用参数运行程序时,aaa bbb我得到以下输出:
com.MyClass aaa bbb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |