[英]get java.lang.reflect.Method safely
类似的interface
用于事件系统作为“侦听器”
interface Updatable {
void update();
}
事件(→ 所有“监听”方法)由
spot(Method, Object... event);
达到。 获取java.lang.reflect.Method
of "listeners" like update
in Updatable
。
试图。 一种选择是使用反射(不安全)来找出要调用的Method
用法。 为“侦听器”接口中的每个方法创建一个常量并将其用作参数
interface Updatable {
void update();
Method UPDATE = method(Updatable.class, "update");
}
//anywhere
spot(UPDATE);
使用这个 util 函数
static public @Nullable Method method(Class<?> of, String name, Class... params) {
try {
return of.getDeclaredMethod(name, params);
}
catch(Exception e) {/*...*/}
}
问题。 有没有
在 (< 8) java 中获取reflect.Method
的方法?
您可以在 java 7 中使用普通的函数类来执行此操作,它不漂亮但工作正常,如果您想让它更漂亮,您可以使用类似https://github.com/luontola/retrolambda 的东西,这将允许您在 java 7 中使用 lambdas 将被编译为匿名内部类。
Listener listenerMethod = new Listener() {
@Override
public void onEvent() {
updatable.update();
}
});
// anywhere, or in that "spot" method:
listenerMethod.onEvent();
和retrolambda只是
Listener listenerMethod = () -> updatable.update();
或类似的东西,取决于您的系统的外观。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.