tôi có chữ ký lớp sau và ClientEventSourc
thực hiện Serializable
:Hiểu biết về FindBugs cảnh báo về lĩnh vực serialVersionUID
public class Grid extends ClientEventSource implements Focusable, FramingBlockWrapper,LIMSEditableField
Bây giờ FindBugs được niêm yết này là tinh ranh:
Class là Serializable, nhưng không xác định serialVersionUID
Lớp này triển khai Serializable nhưng không xác định trường serialVersionUID. Một thay đổi đơn giản như việc thêm tham chiếu đến đối tượng .class sẽ thêm trường tổng hợp vào lớp, sẽ không may thay đổi hàm serialVersionUID ngầm định (ví dụ: thêm tham chiếu vào String.class sẽ tạo trường tĩnh class $ java $ lang $ String). Ngoài ra, mã nguồn khác nhau để bytecode trình biên dịch có thể sử dụng quy ước đặt tên khác nhau cho các biến tổng hợp được tạo ra để tham chiếu đến các đối tượng lớp hoặc các lớp bên trong. Để đảm bảo khả năng tương tác của Serializable trên các phiên bản, hãy cân nhắc thêm serialVersionUID rõ ràng.
Một số người có thể giải thích ý nghĩa của nó và cách tốt nhất có thể để khắc phục điều này là gì?
có bất kỳ thuật toán/chương trình nào tạo số này không? Tôi có nghĩa là nó có thể là bất cứ điều gì hoặc nó cần phải làm theo một số thực hành tốt nhất như hashcode() làm như descibed trong sách java hiệu quả và thực hiện trong EqualsBuilder và HashCodeBuilder từ commache apache. – Geek
Con số này có thể là bất cứ điều gì, miễn là nó là duy nhất trong số các lớp được sắp xếp theo thứ tự của bạn. Eclipse f.e. có máy phát điện riêng, nhưng bạn có thể sử dụng bất kỳ số nào. – Kostronor