如何传递 方法(参数是另一个方法) public void 原始方法(){.....}public void 调用方法(fun){ ..... fun();}调用方法(原始方法);这种问题如何实现?求解!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把你的fun()方法的对象(o)传进来,然后在调用方法里0.fun();如果是同一个类中的方法那么可以直接调用啊...不用传方法的吧? public void 原始方法(){.....}public void 调用方法(){ ..... 原始方法();} 用反射试试public class Test1 { public Object invoke(Method method,Object obj,Object...args){ try { return method.invoke(obj, args); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }} 利用反射中的Method对象就可以了。 其实我想实现的应当是这个样子public void 原始方法0(){.....}public void 原始方法1(){.....}public void 原始方法2(){.....}public void 调用方法(String db,fun){ 这里的fun的数据类型应当是什么? ..... fun();} 调用方法("...",原始方法0); 调用方法("...",原始方法1); 调用方法("...",原始方法2); 在Eclipse下面提示错误 需要数据类型 我不知道“原始方法”的数据类型Eclipse 给导入了这个类 com.sun.org.apache.xpath.internal.functions.Function; 这个也不正确 在java里都是用接口实现回调的(也有叫函数对象的),算是闭包的曲折实现吧。public class Caller { public void call(Task task) { task.doTask(); }}public interface Task { void doTask();}public class Callee implements Task { public void doTask() { // TODO Auto-generated method stub }} 方法是在类中定义的,离开了类就不能执行。所以方法不能像对象一样传递。这在 Java 中是做不到的。 如果参数fun是个字符串,只有用反射,java中没有函数指针的概念.也可以考虑传送个对象做为参数,方法里面调用对象的方法. java利用反射可以的,不过传递的不是方法,而是指向方法的对象,可以利用执行方法的对象去执行某个方法。 直接把fun改成该方法所在的类不就可以高用fun()方法了吗? 在 Java 支持闭包之前,不能将方法作为参数进行传递。 传递一个类似于c#中的methodInfo,java中的Method对象,然后通过放射调用。 请参照10楼的 回调(call back) 用接口可以实现你想要的功能public interface XXXInterface{ public void 原始方法();}public class XXXImplment implements XXXInterface{ public void 原始方法(){ ................. };}public void 调用方法(xxxInterface){ ..... xxxInterface.原始方法();}只要实现了XXXInterface这个接口的类都能传入到你的调用方法。要用面向对象的思想 。 不知道楼主能否明白我说的意思。 public void start() { 调用方法("...", new Function() { @Override public void run() { 原始方法0(); } }); 调用方法("...", new Function() { @Override public void run() { 原始方法1(); } }); 调用方法("...", new Function() { @Override public void run() { 原始方法2(); } }); } public void 原始方法0() { } public void 原始方法1() { } public void 原始方法2() { } public void 调用方法(String db, Function fun) { fun.run(); } public interface Function { void run(); } 1,用反射,2,传对象进去,用callback的思想 java程序运行机制 在idea中创建文件夹问题 送分啦 :回复给分持续 30天:需求分析 JList动态显示问题 JDBC在eclipse下编译成功,在CMD下编译却失败 求救:关于JTree的Ctrl+A事件 问一个关于Object的clone()方法重新定义的问题 怎么实现xml解析元素以Jtree的形式显示! 怎么从键盘读取数据???有没有有什么类啊?? 救救我吧!!!! 算法题 在selvet里面调用socket方法,但特别慢
如果是同一个类中的方法那么可以直接调用啊...
不用传方法的吧?
.....
}public void 调用方法(){
.....
原始方法();
}
public class Test1 { public Object invoke(Method method,Object obj,Object...args){
try {
return method.invoke(obj, args);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}}
public void 原始方法0(){
.....
}
public void 原始方法1(){
.....
}
public void 原始方法2(){
.....
}public void 调用方法(String db,fun){
这里的fun的数据类型应当是什么?
.....
fun();
} 调用方法("...",原始方法0);
调用方法("...",原始方法1);
调用方法("...",原始方法2); 在Eclipse下面提示错误 需要数据类型 我不知道“原始方法”的数据类型
Eclipse 给导入了这个类 com.sun.org.apache.xpath.internal.functions.Function; 这个也不正确
public class Caller { public void call(Task task) {
task.doTask();
}}public interface Task {
void doTask();
}public class Callee implements Task { public void doTask() {
// TODO Auto-generated method stub
}}
public void 原始方法();
}public class XXXImplment implements XXXInterface{
public void 原始方法(){
.................
};
}public void 调用方法(xxxInterface){
.....
xxxInterface.原始方法();
}只要实现了XXXInterface这个接口的类都能传入到你的调用方法。要用面向对象的思想 。 不知道楼主能否明白我说的意思。
public void start() {
调用方法("...", new Function() { @Override
public void run() {
原始方法0();
}
});
调用方法("...", new Function() { @Override
public void run() {
原始方法1();
}
});
调用方法("...", new Function() { @Override
public void run() {
原始方法2();
}
});
} public void 原始方法0() {
} public void 原始方法1() {
} public void 原始方法2() {
} public void 调用方法(String db, Function fun) {
fun.run();
} public interface Function { void run();
}
2,传对象进去,用callback的思想