我有一个类 -
public class Test{
public static void main(String[] args){
for(String s: args){
System.out.println(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我像>运行这个程序时,java Test *
它会打印该文件夹中所有文件的名称.
我不知道JVM或Windows是否通过这个数组而不是'*',我想知道这个程序在其他平台上是否表现相同(除了windows)以及它为什么会以这种方式运行?这有什么目的或原因吗?
注意:
它不会破坏我的任何代码,但我只是好奇.
Jon*_*eet 15
我原本以为这只是执行文件名扩展的命令行shell.这就是我在类Unix系统中所期望的,但不是Windows ......但在Windows下也是如此.
当我编写等效的C#代码时,它不会发生......所以我怀疑它是Java可执行启动程序中的一部分.(请注意,javaw.exe的行为与java.exe相同.)
这当然让我感到意外,我不认为 Java的旧版本在Windows上做到这一点,尽管从2000年12月开始的这个邮件列表表明我错了.(我使用的是OpenJDK 1.7 JRE.)
我在Java Windows文档中找不到这种一般情况的任何描述- 它提到了类路径条目的扩展,但没有提到一般参数.