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));
        }
    }
  • 相关阅读:
    bzoj 2138: stone
    LOJ #6062. 「2017 山东一轮集训 Day2」Pair
    bzoj 5341: [Ctsc2018]暴力写挂
    UOJ #356. 【JOI2017春季合宿】Port Facility
    UOJ #357. 【JOI2017春季合宿】Sparklers
    UOJ #349. 【WC2018】即时战略
    bzoj 3600: 没有人的算术
    Codeforces 960G. Bandit Blues
    codeforces524E
    codeforces193B
  • 原文地址:https://www.cnblogs.com/beiyeren/p/3835548.html
Copyright © 2011-2022 走看看