すべてのパブリックメソッド(スーパークラスを含む)を読み取る必要があるメソッドであり、null以外の属性ストアごとに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();
}
このコードは大丈夫ですか、それとも自分のニーズに関連して重要なことを忘れていますか?