<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java commandline是什麼,讓我們一起了解一下?
commandline是一個命令列,java程式的啟動入口是main方法,可以通過main中的args引數來實現將外界變數傳入main方法內部,因為args引數使用不夠方便,還需要CommandLine實現一個數組。
我們知道,java程式的啟動入口是main方法,我們其實已經可以通過main中的args引數來實現將外界變數傳入main方法內部了,那為什麼還需要CommandLine?
因為args引數使用不夠方便,主要是因為其實現是一個數組,整個傳遞過程需要依賴順序。程式設計者和程式呼叫需要記憶引數的順序,才能正確傳遞引數。這個設計其實是不太好的,更好的做法是通過一個map或者說對映,這樣取值就是通過key來取值,而不需要依賴順序或者位置。
這個其實和spring的jdbcTemplate設計思路一樣。起初就只有jdbcTemplate,傳引數通過佔位符來的,依賴順序。後來才在jdbcTemplate的基礎上做了一層封裝,也就是NamedParameterJdbcTemplate,是通過對映來傳參的。
所以CommandLine其實就是幫我們完成了對映的構建,將原本的陣列引數轉換成了一個對映引數。
實戰操作:
public class Main { public static void main(String args[]) { // 構建引數 Options options = new Options() .addOption("name", true,"map-param")// 鍵值對引數,必須成對 .addOption("has", "bool-param");// bool型引數 // 解析 try { CommandLine line = new DefaultParser().parse(options, args); // 取值 System.out.println(line.hasOption("name")); System.out.println(line.getOptionValue("name")); System.out.println(line.hasOption("has")); } catch (ParseException e) { e.printStackTrace(); } }}