Intellij'de seri sürüm UID'si nasıl oluşturulur


129

Eclipse kullandığımda , seri sürüm UID oluşturmak için güzel bir özelliği vardı.

Ama IntelliJ'de ne yapmalı?

IntelliJ'de aynı seri sürüm UID'si nasıl seçilir veya oluşturulur?

Ve eski sınıfı değiştirdiğinizde ne yapmalısınız?

Belirtmediyseniz, idçalışma zamanında oluşturulur ...



@JFIB Sınıf sabiti serialVersionUIDbelirtilmediğinde derleyici tarafından oluşturulur. Belirtme, değiştirilen sınıf sürümleri için kimliği aynı tutma avantajına (ve tehlikesine) sahiptir. Bu, eski sürümün bir nesnesine sahip bir dosya, yeni sürümle birlikte okunacak (serileştirilmemiş) veya tam tersi.
Joop Eggen

Yanıtlar:


307

Herhangi bir eklenti olmadan:

Sadece vurgulamayı etkinleştirmeniz gerekir: (Idea v. 2016, 2017 ve 2018, önceki sürümler aynı veya benzer ayarlara sahip olabilir)

Dosya -> Ayarlar -> Düzenleyici -> Denetimler -> Java -> Serileştirme sorunları -> 'serialVersionUID' olmadan Serileştirilebilir sınıf - bayrağı ayarlayın ve 'Tamam'ı tıklayın. (Mac'ler için Ayarlar, IntelliJ IDEA -> Tercihler ... altındadır)

Şimdi, sınıfınız uygularsa Serializable, vurgulama göreceksiniz ve sınıf adı üzerinde alt + Enter üretmeyi önerecektir private static final long serialVersionUID.

UPD: bu ayarı bulmanın daha hızlı bir yolu - kısayol tuşunu kullanabilirsiniz Ctrl+Shift+A(eylem bul), yazın Serializable class without 'serialVersionUID'- ilki bir tanesidir.


2
@SalilJunior Pek değil. Yerleşik bir serialVersionUID oluşturma yeteneği, denetim uyarılarına bağlıdır. İnceleme uyarısını etkinleştirmek istemediğinizde ancak bazı durumlarda serialVersionUID oluşturmak istemediğinizde takılıp kalırsınız.
Fabian Barney

Bu çözüm benim için çalışmıyor, yalnızca seçenekleri görebiliyorum: Parcelable Implementation'ı kaldırın, parselable uygulamayı değiştirin, test oluşturun, alt sınıf oluşturun ve paketi özel yapın. Kullandığım sınıf, Parcelable ve Serializable'ı aynı anda uyguluyor. Herhangi bir fikir?
gonver

Yukarıdaki ayarlarda gerekli bayrağın ayarlandığını kontrol ettiniz mi? Hem v16 hem de v17 fikrinde test edildi, iyi çalışıyor. Ayrıca ayarlar penceresinde (sağda) üzerine tıkladıktan sonra bu tür inceleme için ek ayarları kontrol edin.
Serhii Maksymchuk

Bunu bilmiyordum ve çok yardımcı buldum.
Chaklader Asfak Arefe

63

En kolay yöntem: Alt+ Enteraçık

private static final long serialVersionUID = ;

IntelliJ =,. imlecinizi üzerine getirin ve alt+ Enter( Mac'te Option+ Enter) tuşuna basın. "SerialVersionUID Başlatıcıyı Rastgele Değiştir" yazan bir açılır pencere göreceksiniz. Enter tuşuna basmanız yeterlidir ve bu alanı rastgele bir uzunlukla dolduracaktır.


Teşekkürler benim için IntelliJ IDEA Community Edition sürüm 2018.3.3'te çalıştı
Tarun

Ayrıca java belgelerinde mümkünse özel değiştiricinin kullanılması tavsiye edilir. docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/…
Ilya Lozinsky

2
Yukarıdakine daha iyi cevap.
Akin Okegbile

32

GenerateSerialVersionUID eklentisini yükleyin


2
Aşağıdaki @Serhii tarafından gösterildiği gibi kolayca yapılabilecekken neden bir eklenti kurmalısınız?
shaz

2
@shaz Bu incelemenin devre dışı bırakılmasını tercih ederim, ancak bazı sınıflar için açık serialVersionUID almak gerekir. Sadece bir tane için serialVersionUID'e ihtiyacım varken, her sınıfta dikkat dağıtıcı inceleme istemiyorum.
Timofey

1
Eklentinin, ana sınıfın da serileştirilebilir olduğu ve bir serialVersionUID. Bu, alt sınıfı güncellediğinizde ve üst sınıfın serialVersionUID'sini değiştirmeden bu sınıf için yeni bir serialVersionUID oluşturmanız gerektiğinde (ana sınıfta herhangi bir değişiklik yapılmadığı durumlarda) durumla ilgilenir.
kapad

Bu, soruyu yanıtlasa da, yalnızca bir bağlantı değil, burada gerçek bilgileri sağlamak daha iyidir. Yalnızca bağlantı yanıtları iyi yanıtlar olarak kabul edilmez ve büyük olasılıkla silinecektir .
elixenide

3
@EdCottrell Sağlanacak başka bilgi yok. Eklentiyi kullanın ya da kullanmayın.
Meo

2

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

çok güzel, kurulumu çok kolay. bunu eklentiler menüsünden yükleyebilir, diskten yüklemeyi seçebilir, lib klasöründe açtığınız jar dosyasını seçebilirsiniz. yeniden başlatın, control + ins ve menüden seri UID oluşturmak için açılır. Sevdim. :-)


0

ile kod düzenleyicide, UID oluşturmak istediğiniz sınıfı açın, Sağ tıklayın -> Oluştur -> SerialVersionUID. Bunun çalışması için GenerateSerialVersionUID eklentisinin kurulu olması gerekebilir.


1
cevabınızın bu sorunu çözmek için yeni bir şeyler kattığını düşünüyorsunuz? Cevap değilse, cevabınızı silin, çünkü faydasızdır.
nazar_art

Eklentiyi ekledikten sonra, bazıları UID'nin nasıl üretileceği konusunda kafaları karışabilir. Eklenen budur.
mykey

1
Sanırım bu eklentinin man sayfasını okuyabilirler. Cevabınız çok açık.
nazar_art
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.