c++中有函数参数的引用传值方法,如:f(int &a); 这样在函数内部可以对a变量进行修改,请问java中有没有呢?(注:Java中的引用类似于c++的指针,只能修改引用指向的东西,而不能对引用本身进行修改。)
可以使用一个int的holder作为参数,
class Int_Holder
{
public int member;
}
将Int_Holder作为参数,就可以改变其成员member的值了。
java中都是值传递
Java没有类似C++的引用传递,从这点上说Java参数都是值传递。
对于基本类型int,char等作为参数,java都是值传递
而对象类型,使用的引用传递。
具体可以看http://www.chinaunix.net/jh/26/719880.html
楼上说的差不多
java不能传函数,但是传对象可以间接实现传函数,这就是interface的作用,把对象抽象为函数集。
比如:
[code="java"]
interface Action{
int do_action(int a,int b);
}
class Add_action implements Action {
public int do_action(int a, int b) {
return a+b;
}
}
class Minus_action implements Action {
public int do_action(int a, int b) {
return a-b;
}
}
[/code]
调用如下:
[code="java"]
public static int do_some_action(int a,int b,Action c){
return c.do_action(a, b);
}
public static void main(String[] args) {
do_some_action(1,2,new Add_action());
do_some_action(5,2,new Minus_action());
}
[/code]
java都是值传递,没有C++类似的引用传递
反射啊。。。传入函数名。。然后反射找到对应函数 invoke一下就行了