记录折腾的那点事
在折腾的道路上永不止步

JAVA函数如何返回多个值

在开发过程中,经常会有这种情况,就是一个函数需要返回多个值,这是一个问题!!

网上这个问题的解决方法:
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;
    }
}
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));
    }
}



赞(0)
未经允许不得转载:ghMa » JAVA函数如何返回多个值
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址