在java中可以吗?
void aaa(){}
ArrayList<Method> list = new ArrayList<Method>();
list.add(aaa);
如果不是,我如何实现方法(函数)的集合。
我想通过 ID 获取一些方法。
在java中可以吗?
void aaa(){}
ArrayList<Method> list = new ArrayList<Method>();
list.add(aaa);
如果不是,我如何实现方法(函数)的集合。
我想通过 ID 获取一些方法。
您可以执行以下操作:
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);
我相信你可以做到,但你需要使用反射从类/对象中获取方法。也许这个链接有帮助:http ://tutorials.jenkov.com/java-reflection/methods.html
你这样做的方式是行不通的。
您可以调用以下方法Class
public Method[] getMethods() throws SecurityException
返回一个包含 Method 对象的数组,该对象反映了由此 Class 对象表示的类或接口的所有公共成员方法,包括由类或接口声明的那些以及从超类和超接口继承的那些。
public Method[] getDeclaredMethods() throws SecurityException
返回一个 Method 对象数组,反映由此 Class 对象表示的类或接口声明的所有方法。这包括公共、受保护、默认(包)访问和私有方法,但不包括继承的方法。
在这里阅读更多
干杯!!