黑马程序员技术交流社区

标题: 可以把一个方法作为参数传递给另外一个方法调用吗? [打印本页]

作者: 涂金哲    时间: 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说的是没有指针,其实到处都是指针。
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。如下:
  1. public class Demo {

  2.         public static void main(String[] args) {
  3.                 int x = 6;
  4.                 System.out.println("传递参数之前的实参值:"+x);
  5.                 System.out.println("函数返回的值"+add(x));
  6.                 System.out.println("传递参数之后的实参值:"+x);
  7.         }
  8.        
  9.         //值传递
  10.         public static int add(int x){
  11.                 return x+5;
  12.         }
  13. }
复制代码
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
  1. /**
  2. * 引用传递值
  3. * @author Administrator
  4. *
  5. */
  6. public class Demo1 {

  7.         public static void main(String[] args) {
  8.                 Person1 p1 = new Person1("张三",34);
  9.                 System.out.println("调用方法前的Person对象的name===========>"+p1.getName()+"------------age===========>"+p1.getAge());
  10.                 Person1.change(p1,"李四",90);
  11.                 System.out.println("调用方法后的Person对象的name===========>"+p1.getName()+"------------age===========>"+p1.getAge());
  12.         }
  13.        
  14. }

  15. class Person1{
  16.         private String name;
  17.         private int age;
  18.        
  19.         //无参数构造方法
  20.         public Person1() {
  21.         }
  22.         //有参数构造方法
  23.         public Person1(String name, int age) {
  24.                 this.name = name;
  25.                 this.age = age;
  26.         }
  27.        
  28.         //get方法和set方法
  29.         public String getName() {
  30.                 return name;
  31.         }
  32.         public void setName(String name) {
  33.                 this.name = name;
  34.         }
  35.         public int getAge() {
  36.                 return age;
  37.         }
  38.         public void setAge(int age) {
  39.                 this.age = age;
  40.         }
  41.        
  42.         //交换方法
  43.         public static void change(Person1 p,String name,int age){
  44.                 p.name = name;
  45.                 p.age = age;
  46.         }
  47. }
复制代码
希望能对楼主起作用
作者: 陈红建    时间: 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