Cách tạo UID phiên bản nối tiếp trong Intellij


126

Khi tôi sử dụng Eclipse, nó có một tính năng tuyệt vời để tạo UID phiên bản nối tiếp.

Nhưng làm gì trong IntelliJ?

Làm cách nào để chọn hoặc tạo UID phiên bản nối tiếp giống hệt nhau trong IntelliJ?

Và phải làm gì khi bạn sửa đổi lớp cũ?

Nếu bạn chưa chỉ định id, nó sẽ được tạo trong thời gian chạy ...



@JFIB Hằng số lớp serialVersionUIDđược tạo bởi trình biên dịch khi không được chỉ định. Việc chỉ định có lợi ích (và nguy hiểm) là giữ nguyên id cho các phiên bản lớp đã thay đổi. Đó là tệp có đối tượng của phiên bản cũ sẽ được đọc (deserialized) với phiên bản mới hoặc ngược lại.
Joop Eggen

Câu trả lời:


304

Không có bất kỳ plugin nào:

Bạn chỉ cần bật tính năng đánh dấu: (Ý tưởng v.2016, 2017 và 2018, các phiên bản trước có thể có cài đặt giống nhau hoặc tương tự)

Tệp -> Cài đặt -> Trình chỉnh sửa -> Kiểm tra -> Java -> Vấn đề tuần tự hóa -> Lớp có thể tuần tự hóa mà không có 'serialVersionUID' - đặt cờ và nhấp vào 'OK'. (Đối với máy Mac, Cài đặt nằm trong IntelliJ IDEA -> Tùy chọn ...)

Bây giờ, nếu lớp của bạn triển khai Serializable, bạn sẽ thấy tô sáng và alt + Enter trên tên lớp sẽ đề xuất tạo private static final long serialVersionUID.

UPD: một cách nhanh hơn để tìm cài đặt này - bạn có thể sử dụng phím nóng Ctrl+Shift+A(tìm hành động), nhập Serializable class without 'serialVersionUID'- cái đầu tiên là cái.


2
@SalilJunior Không thực sự. Khả năng tích hợp để tạo serialVersionUID gắn liền với các cảnh báo kiểm tra. Bạn bị mắc kẹt khi không muốn bật cảnh báo kiểm tra nhưng tạo serialVersionUID trong một số trường hợp.
Fabian Barney

Giải pháp này không phù hợp với tôi, tôi chỉ có thể thấy các tùy chọn: loại bỏ Thực hiện có thể thay thế, thay thế triển khai có thể thay thế, tạo thử nghiệm, tạo lớp con và tạo gói riêng tư. Lớp tôi đang sử dụng thực hiện Parcelable và Serializable cùng một lúc. Bất kỳ ý tưởng?
gonver 16/1017

Bạn đã kiểm tra xem cờ cần thiết được đặt trong cài đặt ở trên chưa? Đã thử nghiệm ở cả ý tưởng v16 và v17, hoạt động tốt. Đồng thời kiểm tra các cài đặt bổ sung để kiểm tra như vậy sau khi nhấp vào nó trong cửa sổ cài đặt (ở bên phải).
Serhii Maksymchuk 17/1017

Tôi không biết điều này và thấy rất hữu ích.
Chaklader Asfak Arefe

62

Phương pháp dễ nhất: Alt+ Enterbật

private static final long serialVersionUID = ;

IntelliJ sẽ gạch dưới khoảng trắng sau =. đặt con trỏ của bạn lên đó và nhấn alt+ Enter( Option+ Entertrên Mac). Bạn sẽ nhận được một cửa sổ bật lên có nội dung "Thay đổi ngẫu nhiên Bộ khởi tạo serialVersionUID". Chỉ cần nhấn enter và nó sẽ điền vào khoảng trống đó với một khoảng dài ngẫu nhiên.


Cảm ơn đã làm việc cho tôi trong phiên bản IntelliJ IDEA Community Edition 2018.3.3
Tarun

Trong tài liệu java cũng nên sử dụng công cụ sửa đổi riêng nếu có thể. docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/…
Ilya Lozinsky

2
Câu trả lời tốt hơn cho câu trên.
Akin Okegbile

32

Cài đặt plugin GenerateSerialVersionUID


2
Tại sao phải cài đặt một plugin khi điều này có thể dễ dàng được thực hiện như được hiển thị bởi @Serhii bên dưới.
shaz

2
@shaz Tôi thích khi kiểm tra đó bị vô hiệu hóa, nhưng đối với một số lớp, việc nhận serialVersionUID rõ ràng là bắt buộc. Tôi không muốn kiểm tra phân tâm trên mỗi lớp trong khi tôi chỉ cần serialVersionUID cho một lớp.
Timofey

1
Tôi nghĩ rằng plugin giúp tạo giá trị cho các lớp con trong đó lớp cha cũng có thể tuần tự hóa và chứa a serialVersionUID. Điều này xử lý trường hợp khi bạn đã cập nhật lớp con và cần tạo một serialVersionUID mới cho lớp này mà không thay đổi serialVersionUID của lớp cha (trong trường hợp không có thay đổi nào đối với lớp cha).
kapad

Mặc dù điều này có thể trả lời câu hỏi, nhưng tốt hơn là bạn nên cung cấp thông tin thực tế ở đây chứ không chỉ là một liên kết. Các câu trả lời chỉ có liên kết không được coi là câu trả lời tốt và có thể sẽ bị xóa .
elixenide

3
@EdCottrell Không có thông tin nào khác được cung cấp. Sử dụng plugin hoặc không.
Meo

2

IntelliJ IDEA Plugins / GenerateSerialVersionUID https://plugins.jetbrains.com/plugin/?idea&id=185

rất đẹp, rất dễ cài đặt. bạn có thể cài đặt nó từ menu plugin, chọn cài đặt từ đĩa, chọn tệp jar bạn đã giải nén trong thư mục lib. khởi động lại, kiểm soát + in và nó bật lên để tạo UID nối tiếp từ menu. yêu nó. :-)


0

với trong trình soạn thảo mã, Mở lớp bạn muốn tạo UID, Nhấp chuột phải -> Tạo -> SerialVersionUID. Bạn có thể cần cài đặt plugin GenerateSerialVersionUID để nó hoạt động.


1
bạn nghĩ câu trả lời của mình bổ sung điều gì mới để giải quyết vấn đề này? Nếu câu trả lời là không, chỉ cần loại bỏ câu trả lời của bạn, bởi vì nó là vô ích.
nazar_art

sau khi thêm plugin, một số có thể nhầm lẫn về cách thực sự tạo UID. Đó là những gì được thêm vào.
mykey,

1
Tôi đoán rằng họ có thể đọc trang người dùng cho plugin đó. Câu trả lời của bạn là hiển nhiên.
nazar_art
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.