java - 遍历名称以 "get"开头的所有方法 - 比较对象

标签 java compare

是否有可能以某种方式遍历对象的每个方法,名称以“get”开头?我想比较两个非常复杂的自定义对象,它们的字段由基于其他自定义对象的数据结构组成。我想做的是获取每个 get 方法的结果的哈希码,并比较它们是否对每个字段都相等。

如果不是很明白还请见谅,有问题请追问。感谢您的帮助和建议

我想到了这样的事情:

for(method m : gettersOfMyClass){ 
boolean same = object1.m.hashCode() == object2.m.hashCode() 
} 

最佳答案

是的,有可能,而且其实很简单:

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
    }
  }
}

关于java - 遍历名称以 "get"开头的所有方法 - 比较对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11224217/

相关文章:

java - ListView内部布局

java - Libsvm java训练测试示例(也是实时的)

java - 修改文件以响应 IResourceChangeListener

java - 为什么我在 Windows 任务管理器中看到 Eclipse 为 'javaw.exe'?

php - 按顺序比较PHP中数组的最有效方法?

c++ - 在 C++ 中插入优先级队列时如何解决段错误

javascript - 获取数组中的差异

java - 使用 iText 和 PdfGraphics2D 的 PPTX 到 PDF 错误

php - 如何比较具有最佳性能的数组

cocoa - NSNotFound、NSInteger、NSUInteger 和 NSRange.location