在開發過程中,經常會有這種情況,就是一個函數需要返回多個值,這是一個問題!!
網上這個問題的解決方法:
1、使用map返回值;這個方法問題是,你並不知道如何返回值的key是什么,只能通過doc或者通過源代碼來查看。
2、傳入一個引用進去,修改引用的屬性值。問題:不實用。
3、通過泛型構造一個類似python的tuple類,或者構造一個JavaBean,其問題都是“一次性”,覺的不優雅。
個人解決方案:
使用EnumMap作為返回值類型,自己定義一個enum,將可能返回的屬性名定義為enum取值即可。
package com.cy; import java.util.EnumMap; /** * Created by on 2014/7/10. */ public interface TestService { enum UserInfoProperty { ROOM,CELLPHONE,Name } public EnumMap<UserInfoProperty,Object> getUserInfoByName(String name); }
這個類是實現
public class TestServiceImpl implements TestService { @Override public EnumMap<UserInfoProperty, Object> getUserInfoByName(String name) { EnumMap<UserInfoProperty,Object> retMap = new EnumMap<UserInfoProperty, Object>(UserInfoProperty.class); retMap.put(UserInfoProperty.ROOM,"0003"); retMap.put(UserInfoProperty.CELLPHONE,"00004"); retMap.put(UserInfoProperty.Name,name); return retMap; } }
這個類是main入口
public class App { public static void main( String[] args ) { TestService testService = new TestServiceImpl(); String name = "testName"; EnumMap<TestService.UserInfoProperty,Object> userInfo = testService.getUserInfoByName(name); userInfo.entrySet().iterator(); System.out.println(userInfo.get(TestService.UserInfoProperty.Name)); System.out.println(userInfo.get(TestService.UserInfoProperty.ROOM)); System.out.println(userInfo.get(TestService.UserInfoProperty.CELLPHONE)); } }