由於java中沒有指針,不能像C++一樣通過指針的方式實現一個函數返回多個值,因此在java中必須采用變通的方式解決,常用的方式有以下幾種:
1、封裝一個實體類,將要返回的值封裝進去;
2、通過map或者數組的方式來返回多個值;
第一種方案不夠優雅,而且每次要返回多個值時就去封裝一個實體類,這樣會導致實體類多到泛濫;
第二種方案必須采用實現方法和調用方法約定的Key或者下標,如果只是系統內部使用問題不大,但是如果與外部系統對接時,調用方不知道具體的Key值或者下標,只能通過文檔或者查看代碼,通用性不強;
使用EnumMap作為返回值類型,自己定義一個enum,將可能返回的屬性名定義為enum取值即可。
使用示例:
1、定義enum值:
1 enum ExpertOpKey {
2 eokAdd,
3 eokDel
4 }
2、實現能返回多個值的方法:
1 private static EnumMap<ExpertOpKey, Object> testFunc() {
2 EnumMap<ExpertOpKey, Object> map = new EnumMap<ExpertOpKey, Object>(ExpertOpKey.class);
3 map.put(ExpertOpKey.eokAdd, “hello, world”);
4 map.put(ExpertOpKey.eokDel, 193);
5
6 return map;
7 }
3、調用方法獲取多個返回值:
1 public static void main(String[] args) {
2 EnumMap<ExpertOpKey, Object> map = testFunc();
3 System.out.println(map.get(ExpertOpKey.eokAdd));
4 System.out.println(map.get(ExpertOpKey.eokDel));
5 }