读书人

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

发布时间: 2012-01-15 22:57:48 作者: rapoo

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);    }} 

读书人网 >Java相关

热点推荐