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(); ????????} ????} }
以上就是小編今天的分享了,希望可以幫助到大家。