Java 反射检查传递的对象是否为相同类型

Jan*_*ina 1 java reflection

我有一个带有比较方法的类。该方法将两个对象作为参数。使用 java 反射,我能够获得所有私有和受保护的字段,并使用一些花哨的东西检查它们的返回类型并做我想做的事情。

这对我个人来说很好。我知道我想做什么,所以我只比较两个相同类型的对象,仅此而已。

但是......很多人都在使用......他们有时无法阅读我放在那里的Javadocs和评论以及其他东西,所以我必须检查他们是否正在传递相同类型的对象。例如你有: Car a, Car b , Truck a, Truck b ... 等等.. 我需要检查两个传递的参数是否实际上是相同的比较类型 (Car with car , Truck with truck .. )

所以......我不知道这些东西......我应该使用反射列出所有字段的大小,然后检查所有字段是否具有相同的名称?或者有更好的解决方案吗?因为写一些东西,如果 fieldsOfA.size 与 fieldOfB.size 相同......然后 for 循环,如果它们相同来检查名称看起来有点奇怪..

还有一个问题。这些对象有一些其他对象的列表 - 例如 Car 有一个 Wheels 列表..并且您正在将车轮与其他汽车进行比较。他们在列表中有像 Wheel 1、Wheel 2、Wheel 3、Wheel 4 .. 而第二辆车有 Wheel1、Wheel 2、Wheel 4 和 WHeel 3 ..

所以对象是相同的,但只是交换了位置......有没有办法防止这种情况?我有一个跟踪代码,可以存储这些对象的所有差异。所以如果它们的位置不同,它会给我两个变化。轮 3 与其他汽车不同,轮 4 与其他汽车不同。

但它们仍然相同......我不知道如何通过反射解决这个问题......有什么想法吗?

cbe*_*der 5

要比较类只需使用 if(object1.getClass() == object2.getClass())