当前位置: 代码迷 >> J2EE >> java 里边能把method name 作为另外一个method 的参数吗
  详细解决方案

java 里边能把method name 作为另外一个method 的参数吗

热度:16   发布时间:2016-04-22 00:34:48.0
java 里面能把method name 作为另外一个method 的参数吗?
比如把 method1 作为 method2 的参数. 可以吗? 如何弄?

必须要是abstract method吗?

谢谢

------解决方案--------------------
如果你的method2有返回值,并且和method1的参数类型一致,就可以method1(method2),这么写..
但是在定义方法的时候应该不能把method2作为参数,没有具体了解过!
------解决方案--------------------
我很好奇Method的定义。也很想知道怎样做的好处是什么。求解!谢谢
------解决方案--------------------
探讨

找到一个例子,但是没大看懂:
Java code
public void setAllComponents(Component[] myComponentArray, Method myMethod) {
for (Component leaf : myComponentArray) {
if (leaf instanceof Container) { //recur……

------解决方案--------------------
啊是委托呀.
------解决方案--------------------
Java没有函数指针,这东西很多时候很好用的。
------解决方案--------------------
用反射。

public class DemoInvoke {
public void sayHello() {
System.out.println("hello java!");
}

public void foo(String methodName) {
try {
getClass().getDeclaredMethod(methodName).invoke(this);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
DemoInvoke di = new DemoInvoke();
di.foo("sayHello");
}

}
------解决方案--------------------
Java code
public class DemoInvoke {    public void sayHello() {        System.out.println("hello java!");    }    public void foo(String methodName) {        try {            getClass().getDeclaredMethod(methodName).invoke(this);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        DemoInvoke di = new DemoInvoke();        di.foo("sayHello");    }}
------解决方案--------------------
把一个函数作为另一个函数的参数,这种功能称为闭包,目前的 JDK 还不支持这类语法,呵呵。
  相关解决方案