当前位置: 代码迷 >> Java相关 >> java是否可以把函数作为参数传递解决思路
  详细解决方案

java是否可以把函数作为参数传递解决思路

热度:9872   发布时间:2013-02-25 21:49:27.0
java是否可以把函数作为参数传递
我是一个JAVA新手,我设计了一个类,我想在另一个类中调用他的方法(通过参数)
我写了一个模型,我想请大侠帮我完成细节.

public class tool
{
  public void a()///方法a
  {
  ..........
  }
  public void b()//方法b
  {
  .........
  }
}

public class control()
{
  public void invoke(int i)
  {
  if(i==0)
  user.use(tool.a)//这里我想按需要调用不同的方法,且方法能不能作为参数传进去??如果能应怎么传??
  else
  user.use(tool.b)//这里我想按需要调用不同的方法,且方法能不能作为参数传进去??如果能应怎么传??
  }

}
public class user
{
  public void use(arg)//这里我想收到传进来的函数?可不可行?应当怎么接收?
  {
  arg();//这里调用的是tool.a 或者 tool.b ,可不可行?应当怎么调用?  
  }
}

------解决方案--------------------------------------------------------
利用反射。 大致的代码如下,给你个思路,有些地方用到的时候还需要具体完善。


类名最好大写

在use里面通过 
method.invoke(tool, null);可以调用Tool里面的方法


Java code
public class Tool {        public void a()// /方法a    {        System.out.print("tool.a()...");    }    public void b()// 方法b    {        System.out.print("tool.b()...");    }}public class Control {    public void invoke(int flag) {        User user = new User();        try {            switch (flag) {            case 0:                user.use(Tool.class.getMethod("a", null));                break;            default:                user.use(Tool.class.getMethod("b", null));                break;            }        } catch (Exception e) {            e.printStackTrace();        }    }}import java.lang.reflect.Method;public class User{    public void use(Method method)    {        Tool tool = new Tool();        try {            [color=#FF0000]method.invoke(tool, null);[/color]        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args){        Control control = new Control();        control.invoke(0);    }}
  相关解决方案