from:http://jonllen.javaeye.com/blog/370501
今天在Jsp页面内调用方法的时候碰到了一个问题,是一个服务器端分页的方法,本身是返回List集合的,但是还需要返回总记录数和总页面,没办法返回, 想到Java内方法的传值传引用类型,在网上找了Java传递参数分为2种:
- 值类型,Java里面也叫简单类型,这种参数类型的传递的是它的副本拷贝;
- 引用类型,传递的是对象引用地址,如果在方法内改变该参数对象属性即是对原引用对象的改变;如果不想这样传递可传递 对象.clone() 即传递的是该对象的副本拷贝;
那么,如果我想传递简单参数类型,但是我又想在方法内能改变原参数的值那如果传递呢?比如说一个方法是返回List集合但是我还需要传递一个总记录条数和 总页面的参数,在该方法内进行赋值。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