天天看點

java中如果需要傳回多個值怎麼辦

首先我們明确一下:java方法的傳回值隻有一個,但是傳回值的類型不限

有一種程式設計語言可以傳回多個值

java中如果需要傳回多個值怎麼辦

 運作結果如下:

[whuang@huangwei function2]$ ./function_dict02.py

my name is  walter

my age is  23

java中如果需要傳回多個值怎麼辦

在java中如何達到相同的目的呢?

(1)把這多個傳回值再封裝成為對象

可以封裝成為java bean,數組,arraylist ,甚至map

下面看一個實際案例

java中如果需要傳回多個值怎麼辦

 簡單說明一下:

這個方法是發送http 請求,傳回的内容有四項:請求的結果,sessionid,response code,contenttype

我是如何做的呢? 把這四項放到了一個object數組中

(2)向方法傳遞一個空對象,把要傳回的值放在該參數中

下面這個方法中有一個參數,類型是list

java中如果需要傳回多個值怎麼辦

/*** 

     *  

     * @param conditonobj : <br />whether to include query criteria which field is 0. <br />true:add[where xxx=0];<br /> false:no [where xxx=0] 

     * @param list 

     * @param first : 起始位置 

     * @param maxrecordsnum : 最多查詢多少條 

     * @param ordercolumnmodemap : 有序的map用于order by 

     * @return 

     */  

    public long listbypage(class clz,object conditonobj,boolean includezeros,boolean islike, list list, int first,  

            int maxrecordsnum,boolean isdistinctroot,string notnullcolumn,listorderedmap ordercolumnmodemap) {  

        criteria criteria=getcriteria(clz, conditonobj, includezeros,islike,isdistinctroot,notnullcolumn);  

        long count=count(criteria);  

        if(count<1){  

            return count;  

        }  

        //當count為0時就不需要下面的條件查詢了  

        criteria criteria2=getcriteria(clz, conditonobj, includezeros,islike,isdistinctroot,notnullcolumn);  

        if(ordercolumnmodemap!=null){  

            int orderlength=ordercolumnmodemap.size();  

            for(int i=0;i<orderlength;i++){  

                string ordermode =(string)ordercolumnmodemap.getvalue(i);  

                string ordercolumn=(string)ordercolumnmodemap.get(i);  

                orderby(ordercolumn, ordermode, criteria2);  

            }  

        paging(criteria2, first, maxrecordsnum);  

        list.addall(criteria2.list());/* 擷取查詢結果 */  

        return count;  

    }  

 看起來它的傳回值隻有一個,long類型的,但是其實參數list也是為了擷取傳回值的

對listbypage 的調用:

java中如果需要傳回多個值怎麼辦