在 Java 中创建**命令行界面(CLI,Command Line Interface)**通常有几种方式,从最基础到更专业,下面按常见程度给你介绍。
Scanner / BufferedReader)适合初学者、简单交互程序。
Scannerimport java.util.Scanner;
public class CliDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入你的名字:");
String name = scanner.nextLine();
System.out.println("你好," + name + "!");
scanner.close();
}
}
运行:
javac CliDemo.java
java CliDemo
✅ 优点:简单
❌ 缺点:参数解析、帮助信息要自己写
args 参数(无交互 CLI)适合工具类程序。
public class ArgsDemo {
public static void main(String[] args) {
if (args.length < 2) {
System.out.println("用法: java ArgsDemo <name> <age>");
return;
}
System.out.println("姓名: " + args[0]);
System.out.println("年龄: " + args[1]);
}
}
运行:
java ArgsDemo Tom 18
适合正式命令行工具。
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.5.0</version>
</dependency>
import org.apache.commons.cli.*;
public class CommonsCliDemo {
public static void main(String[] args) throws ParseException {
Options options = new Options();
options.addOption("n", "name", true, "你的名字");
options.addOption("h", "help", false, "显示帮助");
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
if (cmd.hasOption("h")) {
new HelpFormatter().printHelp("java -jar app.jar", options);
return;
}
String name = cmd.getOptionValue("n", "匿名");
System.out.println("你好," + name);
}
}
运行:
java -jar app.jar -n Tom
java -jar app.jar -h
✅ 自动支持 -h、--help
✅ 参数规范、易维护
最流行、功能最强、支持颜色、子命令
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.5</version>
</dependency>
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
@Command(name = "greet", mixinStandardHelpOptions = true)
public class PicocliDemo implements Runnable {
@Option(names = {"-n", "--name"}, description = "你的名字")
String name = "匿名";
public void run() {
System.out.println("你好," + name);
}
public static void main(String[] args) {
new CommandLine(new PicocliDemo()).execute(args);
}
}
运行:
java PicocliDemo -n Tom
java PicocliDemo --help
✅ 自动帮助
✅ 子命令
✅ 企业级 CLI 首选
| 场景 | 推荐 |
|---|---|
| 学习 / 练习 | Scanner |
| 简单脚本 | args |
| 工具程序 | Apache Commons CLI |
| 专业 CLI 工具 | Picocli |
如果你愿意,我可以:
你打算做哪种 CLI?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。