Java 如何访问通过main(string[]args)传入的命令行选项列表中的最后一个字符串?

Java 如何访问通过main(string[]args)传入的命令行选项列表中的最后一个字符串?,java,arrays,command-line-interface,Java,Arrays,Command Line Interface,我正在构建一个Java应用程序,它接受不同数量的命令行选项作为输入,最后一项始终是文件名。当我在下面的第二行中指定参数索引时(例如,args[2]),当我提前知道索引时,一切当然都正常工作,但是我很难想出正确的语法来访问字符串[]中的最后一项当处理一个文件,甚至一个字符串作为输入时,与整数数组或其他更简单的方法相比,当索引号变化时 public static void main(String[] args) { String inFile = args.length-1; 尝试: 你

我正在构建一个Java应用程序,它接受不同数量的命令行选项作为输入,最后一项始终是文件名。当我在下面的第二行中指定参数索引时(例如,
args[2]
),当我提前知道索引时,一切当然都正常工作,但是我很难想出正确的语法来访问
字符串[]中的最后一项
当处理一个文件,甚至一个字符串作为输入时,与整数数组或其他更简单的方法相比,当索引号变化时

public static void main(String[] args) {

    String inFile = args.length-1;
尝试:

你必须使用

String inFile = args[args.length-1];
//array name    ^^^
//last index value   ^^^^^^^^^^^^^^

如果您经常需要此功能,可以将其封装到方法中:

public static <T> T last(T[] them) {
    return them != null && them.length > 0 ? them[them.length - 1] : null;
}

public void test(String[] args) throws Exception {
    String fileName = last(args);
}
public static T last(T[]他们){
返回它们!=null&&theme.length>0?它们[theme.length-1]:null;
}
公共无效测试(字符串[]args)引发异常{
字符串文件名=最后一个(args);
}

假设
args
不是空的:
args[args.length-1]
。谢谢,这很有效。我意识到这是一个简单的问题,但我希望这能让其他人的搜索更容易,因为我无法找到它。我很高兴。请接受我的答案并投票。很好,但请注意空检查是死代码,因为
String[]在main()方法中,args
不能为null。
null
可以是数组中的一个元素,因此不应将其作为“错误”值返回。如果
它们
null
,最好抛出
NullPointerException
,如果为空则抛出
NoTouchElementException
public static <T> T last(T[] them) {
    return them != null && them.length > 0 ? them[them.length - 1] : null;
}

public void test(String[] args) throws Exception {
    String fileName = last(args);
}