java是否可以把函数作为参数传递解决思路
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新手,我设计了一个类,我想在另一个类中调用他的方法(通过参数)
我写了一个模型,我想请大侠帮我完成细节.
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); } }