Có thư viện tiện ích Java nào tương tự với khác biệt của chương trình Unix, nhưng dành cho Đối tượng không? Tôi đang tìm thứ gì đó có thể so sánh hai đối tượng cùng loại và tạo cấu trúc dữ liệu đại diện cho sự khác biệt giữa chúng (và có thể so sánh đệ quy sự khác biệt trong các biến phiên bản). Tôi không tìm cách triển khai Java của một khác biệt văn bản. Tôi cũng không tìm kiếm trợ giúp về cách sử dụng phản chiếu để thực hiện việc này.
Ứng dụng mà tôi đang duy trì có một bản triển khai chức năng này còn mỏng manh, có một số lựa chọn thiết kế kém và cần được viết lại, nhưng sẽ tốt hơn nữa nếu chúng ta có thể sử dụng một thứ gì đó đã có sẵn.
Đây là một ví dụ về loại thứ tôi đang tìm kiếm:
SomeClass a = new SomeClass();
SomeClass b = new SomeClass();
a.setProp1("A");
a.setProp2("X");
b.setProp1("B");
b.setProp2("X");
DiffDataStructure diff = OffTheShelfUtility.diff(a, b); // magical recursive comparison happens here
Sau khi so sánh, tiện ích sẽ cho tôi biết rằng "prop1" là khác nhau giữa hai đối tượng và "prop2" cũng vậy. Tôi nghĩ DiffDataStructure là một cái cây là điều tự nhiên nhất, nhưng tôi sẽ không kén chọn nếu mã đáng tin cậy.