from:http://jonllen.javaeye.com/blog/370501
今天在Jsp頁面內調用方法的時候碰到了一個問題,是一個伺服器端分頁的方法,本身是返回List集合的,但是還需要返回總記錄數和總頁面,沒辦法返回,
想到Java內方法的傳值傳參考型別,在網上找了Java傳遞參數分為2種:
- 實值型別,Java裡面也叫簡單類型,這種參數類型的傳遞的是它的副本拷貝;
- 參考型別,傳遞的是對象引用地址,如果在方法內改變該參數對象屬性即是對原引用對象的改變;如果不想這樣傳遞可傳遞 對象.clone()
即傳遞的是該對象的副本拷貝;
那麼,如果我想傳遞簡單參數類型,但是我又想在方法內能改變原參數的值那如果傳遞呢?比如說一個方法是返回List集合但是我還需要傳遞一個總記錄條數和
總頁面的參數,在該方法內進行賦值。Java內傳遞值還是參考型別還有一條規定,所有數組參數都是引用傳遞,即傳遞的是原地址,一旦改變數組參數值原引用
數組值也回相應的改變,這樣便能在一個有傳回值的方法裡還返回總記錄條數和頁數。
舉個例子:
Java代碼
- public
List<Product> GetProductList(
int
categoryid,
int
pageindex,
int
pagesize,
int
[] args)
- {
- List<Product> list = new
ArrayList<Product>();
- args[0
] =
100
;
- args[1
] =
101
;
- return
list;
- }
-
- //調用
- int
cid =
0
,pageindex =
1
,pagesize =
10
,recordcount =
0
,pagecount =
0
;
- int
[] args =
new
int
[]{recordcount,pagecount};
- plist = GetProductList(cid,pageindex,pagesize,args);
- recordcount = args[0
];
- pagecount = args[1
];
- System.out.println("總記錄數:"
+recordcount);
- System.out.println("總頁數:"
+pagecount);
public List<Product> GetProductList(int categoryid,int pageindex,int pagesize,int[] args){List<Product> list = new ArrayList<Product>();args[0] = 100; args[1] = 101;return list;}//調用int cid = 0,pageindex =1,pagesize = 10 ,recordcount = 0,pagecount = 0;int[] args = new int[]{recordcount,pagecount};plist = GetProductList(cid,pageindex,pagesize,args);recordcount = args[0];pagecount = args[1];System.out.println("總記錄數:"+recordcount);System.out.println("總頁數:"+pagecount);
這裡結果將會輸出 總記錄數:100 總頁數:101