zoukankan      html  css  js  c++  java
  • 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;
        }
    }

    这个类是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));
        }
    }
  • 相关阅读:
    svn不提交.net项目中的bin
    java 与C# 时间格式 交互
    生成菜单序列号
    ashx 方法模板
    webservice使用方法
    如何配置IIS服务器?
    zepto.fullpage
    模拟单选框
    star score
    Hover show tips
  • 原文地址:https://www.cnblogs.com/beiyeren/p/3835548.html
Copyright © 2011-2022 走看看