Java方法強制傳遞引用參數(做為傳回值),改變被傳遞參數值。

來源:互聯網
上載者:User

 from:http://jonllen.javaeye.com/blog/370501

 

     今天在Jsp頁面內調用方法的時候碰到了一個問題,是一個伺服器端分頁的方法,本身是返回List集合的,但是還需要返回總記錄數和總頁面,沒辦法返回,
想到Java內方法的傳值傳參考型別,在網上找了Java傳遞參數分為2種:

  • 實值型別,Java裡面也叫簡單類型,這種參數類型的傳遞的是它的副本拷貝;
  • 參考型別,傳遞的是對象引用地址,如果在方法內改變該參數對象屬性即是對原引用對象的改變;如果不想這樣傳遞可傳遞 對象.clone()
    即傳遞的是該對象的副本拷貝;

   
那麼,如果我想傳遞簡單參數類型,但是我又想在方法內能改變原參數的值那如果傳遞呢?比如說一個方法是返回List集合但是我還需要傳遞一個總記錄條數和
總頁面的參數,在該方法內進行賦值。Java內傳遞值還是參考型別還有一條規定,所有數組參數都是引用傳遞,即傳遞的是原地址,一旦改變數組參數值原引用
數組值也回相應的改變,這樣便能在一個有傳回值的方法裡還返回總記錄條數和頁數。

    舉個例子:

Java代碼
  1. public
     List<Product> GetProductList(
    int
     categoryid,
    int
     pageindex,
    int
     pagesize,
    int
    [] args)  
  2.     {  
  3.         List<Product> list = new
     ArrayList<Product>();  
  4.         args[0
    ] = 
    100
    ;  
  5.                                 args[1
    ] = 
    101
    ;  
  6.         return
     list;  
  7.     }  
  8.   
  9. //調用
      
  10. int
     cid = 
    0
    ,pageindex =
    1
    ,pagesize = 
    10
     ,recordcount = 
    0
    ,pagecount = 
    0
    ;  
  11. int
    [] args = 
    new
     
    int
    []{recordcount,pagecount};  
  12. plist = GetProductList(cid,pageindex,pagesize,args);  
  13. recordcount = args[0
    ];  
  14. pagecount = args[1
    ];  
  15. System.out.println("總記錄數:"
    +recordcount);  
  16. 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.