我查找了Observer和Observable类(接口),但我需要创建更通用的东西。
例如,如果我要构建一个可观察的Paint类,我应该覆盖许多方法..我不想要这个。
我想也许可以创建一个自定义观察器来保存要观察的类的所有方法结果,并在isChanged()
调用后返回状态(true
或false
)比较具有当前值的旧值。
以下代码方法可用于检索泛型类中的所有方法:
// Found on http://stackoverflow.com/
public static Method[] getAccessibleMethods(Class clazz) {
List<Method> result = new ArrayList<Method>();
while (clazz != null) {
for (Method method : clazz.getDeclaredMethods()) {
int modifiers = method.getModifiers();
if (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers)) {
result.add(method);
}
}
clazz = clazz.getSuperclass();
}
return result.toArray(new Method[result.size()]);
}
一旦我们列出了方法,我们就可以调用每个方法并将结果存储在通用数组中。 当我们需要检查一些变化时,我们可以刷新所有结果并与旧的进行比较。
所以,问题是:是否可以创建这种自定义观察者或者有一种有效的替代方式(或者已经完成的东西)?
显而易见我们只能调用具有确定特征的方法:
- 没有参数方法
- 没有返回void的方法