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

streamgogo 2011-11-13 10:49:17
我是一个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 ,可不可行?应当怎么调用?
}
}
...全文
16874 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
majianan 2011-11-13
  • 打赏
  • 举报
回复
是说我么?O(∩_∩)O~

[Quote=引用 6 楼 streamgogo 的回复:]

非常感谢,你的回答直点题意!
[/Quote]
streamgogo 2011-11-13
  • 打赏
  • 举报
回复
非常感谢,你的回答直点题意!
liudaze 2011-11-13
  • 打赏
  • 举报
回复
直接new一个新对象,然后调用就可以了,
majianan 2011-11-13
  • 打赏
  • 举报
回复 1
利用反射。 大致的代码如下,给你个思路,有些地方用到的时候还需要具体完善。


类名最好大写

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



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 {
method.invoke(tool, null);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args){
Control control = new Control();
control.invoke(0);
}
}

streamgogo 2011-11-13
  • 打赏
  • 举报
回复
传递对象进去是可以,但我的问题的关键是,在
public void use(..)这个函数里,怎样动态确定是调用哪个函数?
streamgogo 2011-11-13
  • 打赏
  • 举报
回复
楼上的意思是,调用时:
public void invoke(int i)
{
if(i==0)
user.use(tool.a)//就这样就可以了?
else
user.use(tool.b)//
}



public void use(Object arg)//如果调用可以了,那么接收函数这样也可以?
{
arg();//请问这里怎么调用,要转型吗?
}

孟祥月 2011-11-13
  • 打赏
  • 举报
回复
直接传递对象就可以了

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧