Je crois que vous pouvez trouver une bonne solution si vous vous concentrez sur les détails de votre problème spécifique. La seule solution "raisonnable" que j'ai à l'esprit pour le cas général est basée sur reflection: balayer les membres de données et trouver des similitudes des paires correspondantes de membres récursivement.
Cependant, il y a tellement de problèmes avec cette idée, donc je ne pense pas que ce soit faisable. Parmi eux:
1) Le concept poids des sous-arbres membres doit être bien défini afin de pouvoir retourner un pourcentage de similarité.
2) Comment gérer les membres de données qui n'appartiennent qu'à l'un des objets? cela se produira fréquemment en comparant une instance de classe A à une instance d'une classe descendante B.
3) Peut-être le plus gros problème: Le mappage entre la structure interne d'un objet et sa représentation abstraite des données n'est pas une fonction injective . Par exemple, deux hashmaps représentant le même mappage peuvent avoir une structure interne différente, en raison d'un historique différent des réallocations de table.
Ceci est une question trop générale. Veuillez fournir des informations supplémentaires sur ce que vous envisagez de faire. –
Quel type d '«objet/données»: instances de classe Java arbitraires? Formes 3D? – ChrisW
Selon javap, String a 4 membres d'instance: value, offset, count, hash. ("Hello World", 0,5, -1) et ("Good Bye World", 0,5, -1) se ressemblent au niveau de 75%. Soit NotString une classe implémentant CharSequence qui n'a pas ces 4 membres d'instance. Quelle est la relation d'analogie entre String "Hello World" et NotString "Hello World"? – emory