如何在Eclipse产品中实现命令参数的可标识获取?
Eclipse RCP 程序参数键值对获取方案
完全可以实现按标识键取参数,不需要依赖参数位置,具体操作如下:
1. 统一参数传入格式
不管是本地调试还是正式环境传参,都采用--键名=参数值的格式传入,比如你的接口地址参数可以写成:--my_api=http://some_url/api/v1/
本地调试时在Program Arguments中直接配置--my_api=${my_api}即可,和你原来的本地参数配置逻辑完全兼容。
2. 封装参数转Map工具方法
自己写个工具类,把Platform.getApplicationArgs()返回的字符串数组转换成键值对格式的Map,示例代码如下:
import java.util.HashMap; import java.util.Map; import org.eclipse.core.runtime.Platform; public class ApplicationArgsHolder { private static Map<String, String> argsKeyValueMap; // 一次性解析所有参数并存入Map private static void parseArgs() { argsKeyValueMap = new HashMap<>(); String[] allArgs = Platform.getApplicationArgs(); for (String arg : allArgs) { // 匹配--开头的键值对参数 if (arg.startsWith("--")) { String[] keyValuePair = arg.substring(2).split("=", 2); if (keyValuePair.length == 2) { // 正常键值对参数 argsKeyValueMap.put(keyValuePair[0], keyValuePair[1]); } else if (keyValuePair.length == 1) { // 兼容无值的开关型参数,比如--debug,默认值设为true argsKeyValueMap.put(keyValuePair[0], "true"); } } } } // 对外提供的取值方法,支持设置默认值 public static String getArgByKey(String key, String defaultValue) { if (argsKeyValueMap == null) { parseArgs(); } return argsKeyValueMap.getOrDefault(key, defaultValue); } }
3. 调用方式
需要取参数时直接调用工具类方法即可,不用关心参数的排列位置:
// 取my_api参数值,第二个参数为取不到时的默认值 String apiUrl = ApplicationArgsHolder.getArgByKey("my_api", "http://default_url/api/v1/");
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

