迭代所有名称以"get"开头的方法 - 比较对象

Luc*_*ryn 11 java compare

是否有可能以某种方式迭代对象的每个方法,名称以"get"开头?我想比较两个非常复杂的自定义对象,它们包含基于其他自定义对象的数据结构.我想要做的是获取每个get方法的结果的哈希码,并比较每个字段是否相等.

对不起,如果不是很容易理解,如果您有任何疑问请咨询.感谢您的任何帮助和建议

我想到了类似的东西:

for(method m : gettersOfMyClass){ 
boolean same = object1.m.hashCode() == object2.m.hashCode() 
} 
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 22

当然这是可能的,事实上很简单:

public static void main(String[] args) throws Exception {
  final Object o = "";
  for (Method m : o.getClass().getMethods())
    if (m.getName().startsWith("get") && m.getParameterTypes().length == 0) {
      final Object r = m.invoke(o);
      // do your thing with r
    }
}
Run Code Online (Sandbox Code Playgroud)