-1

我有一个应该读取所​​有公共方法(包括超类)并为每个非空属性存储它的 hashCode 的方法。

private static String reflect(Object o) {
    StringBuilder key = new StringBuilder();

    try {
        for (Method m : o.getClass().getMethods()) {
            if (m.getName().startsWith("get") || m.getName().startsWith("is")) {
                Object result = m.invoke(o, new Object[]{});
                key.append(result != null ? result.hashCode() : "-");
            }
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return key.toString();
}

这段代码可以吗,还是我忘记了与我的需求相关的重要内容?

4

1 回答 1

4

我能看到的唯一明显的事情是,如果您使用哈希码来识别对象中的更改,您应该知道getMethods() 返回的方法的顺序是“没有任何特定的顺序”,所以不能保证它们将在另一个 JVM 中以相同的顺序返回,甚至从一个调用到另一个调用。

于 2013-01-31T17:09:18.460 回答