日期:2014-05-19  浏览次数:20799 次

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 还不支持这类语法,呵呵。