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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM