Java方法强制传递引用参数(做为返回值),改变被传递参数值。

 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值