黑马程序员技术交流社区
标题:
可以把一个方法作为参数传递给另外一个方法调用吗?
[打印本页]
作者:
涂金哲
时间:
2012-7-30 16:54
标题:
可以把一个方法作为参数传递给另外一个方法调用吗?
java的参数传递可以使基本类型的 形式如:
void Test(int a){
……
}
可以使引用类型的形式如:
void Test(File f){
……
}
还有Jdk5.0的可变参数代替数组的,形式如:
void Test(int …args){
……
}
这些是经常见到的 形式
假如 ,我们要传递的参数是一个 方法,或者说 我们能模拟一下,实现把一个方法作为参数传递给另外一个方法?这个可以实现吗?或者说java目前已经实现这个了吗
会有这种形式吗?
void Test(method())
{
……
}
作者:
唐志兵
时间:
2012-7-30 17:18
方法是不能作为参数传递的。
作者:
李东升
时间:
2012-7-30 17:46
应该不可以。类的对象可以当做参数,因为类里面的属性,方法,都可以通过对象名来调用,而方法内部,貌似已经没有可利用的了。至于方法本事,直接调用就可以了,用不着当参数传递,。
作者:
于星星
时间:
2012-7-30 17:48
java中是不可以把方法作为参数传递的,java中只有
值传递
和
引用传递
,但是在javascript中可以直接将函数作为参数传递。其实javascript中的函数就是对象。
因为java中没有指针,其实只有值传递。但是可以把java中的对象看做是指针。java说的是没有指针,其实到处都是指针。
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。如下:
public class Demo {
public static void main(String[] args) {
int x = 6;
System.out.println("传递参数之前的实参值:"+x);
System.out.println("函数返回的值"+add(x));
System.out.println("传递参数之后的实参值:"+x);
}
//值传递
public static int add(int x){
return x+5;
}
}
复制代码
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
/**
* 引用传递值
* @author Administrator
*
*/
public class Demo1 {
public static void main(String[] args) {
Person1 p1 = new Person1("张三",34);
System.out.println("调用方法前的Person对象的name===========>"+p1.getName()+"------------age===========>"+p1.getAge());
Person1.change(p1,"李四",90);
System.out.println("调用方法后的Person对象的name===========>"+p1.getName()+"------------age===========>"+p1.getAge());
}
}
class Person1{
private String name;
private int age;
//无参数构造方法
public Person1() {
}
//有参数构造方法
public Person1(String name, int age) {
this.name = name;
this.age = age;
}
//get方法和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//交换方法
public static void change(Person1 p,String name,int age){
p.name = name;
p.age = age;
}
}
复制代码
希望能对楼主起作用
作者:
陈红建
时间:
2012-7-30 17:58
void String fuction(){return "aaa";}
System.out.println(fuction());
这样算不算?应该是接收一个对象而不是方法。
作者:
涂金哲
时间:
2012-7-30 18:13
李东升 发表于 2012-7-30 17:46
应该不可以。类的对象可以当做参数,因为类里面的属性,方法,都可以通过对象名来调用,而方法内部,貌似已 ...
试想一下如果实现着个功能 我们可以简化很多事情,可以在参数方法中定义一些重复执行的代码步骤 这样程序是不是就更强大了?举个例子:我们都知道通过方法的回调可以遍历文件目录 ,如果传递进来一个对文件操作的方法不就可以同时完成更多的操作?
作者:
金龙
时间:
2012-7-30 18:37
可以啊!方法返回的也是具体的值,为什么不可以,如果A方法内需要传入一个int类型的数据,那么我可以通过B方法获取数据传递进去,这个是符合逻辑的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2