0

在java中可以吗?

void aaa(){}

ArrayList<Method> list = new ArrayList<Method>();
list.add(aaa);

如果不是,我如何实现方法(函数)的集合。
我想通过 ID 获取一些方法。

4

4 回答 4

3

您可以执行以下操作:

interface VoidFunction {
    void evaluate();
}

...

List<VoidFunction> list = new ArrayList<>();

VoidFunction aaa = new VoidFunction() {
    @Override
    public void evaluate() {
        aaa();
    }
}

list.add(aaa);

在 Java 8 中,这应该更容易和更好:

List<Consumer<Void>> list = new ArrayList<>();

Consumer<Void> aaa = () -> {...};

list.add(aaa);

(我相信我的语法是正确的)

如果您已经将该aaa方法定义为常规方法,则可以执行以下操作:

list.add(MyClass::aaa);
于 2013-10-11T16:03:13.500 回答
2

您需要使用反射来获取方法,例如

this.getClass().getMethod("aaa")

或者,如果您不需要访问类上定义的方法,则可以使用Callables

ArrayList<Callable> list = new ArrayList<Callable>();
list.add(new Callable() {
   public String call() {
     return "asdf";
   }
});
于 2013-10-11T16:02:30.670 回答
0

我相信你可以做到,但你需要使用反射从类/对象中获取方法。也许这个链接有帮助:http ://tutorials.jenkov.com/java-reflection/methods.html

你这样做的方式是行不通的。

于 2013-10-11T16:02:05.087 回答
0

您可以调用以下方法Class

public Method[] getMethods() throws SecurityException

返回一个包含 Method 对象的数组,该对象反映了由此 Class 对象表示的类或接口的所有公共成员方法,包括由类或接口声明的那些以及从超类和超接口继承的那些。

public Method[] getDeclaredMethods() throws SecurityException

返回一个 Method 对象数组,反映由此 Class 对象表示的类或接口声明的所有方法。这包括公共、受保护、默认(包)访问和私有方法,但不包括继承的方法。

在这里阅读更多

干杯!!

于 2013-10-11T16:03:39.003 回答