码迷,mamicode.com
首页 > 编程语言 > 详细

java 一个函数EnumMap返回多个值

时间:2016-04-25 06:47:48      阅读:450      评论:0      收藏:0      [点我收藏+]

标签:

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

网上这个问题的解决方法:

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));
    }
}

java 一个函数EnumMap返回多个值

标签:

原文地址:http://www.cnblogs.com/destim/p/5429157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!