Serialization
we
SerialVersionUID
köp Java döredijiler üçin elmydama syr bolup galýar. Näme hakda soraglary köplenç görýärin , ýa-da öz klasymda
SerialVersionUID
yglan etmesem näme bolýar ? Bu soragyň bulaşyk we ýygy-ýygydan ulanylmagyndan başga-da, Eclipse IDE-iň ýitirilen duýduryşy , mysal üçin: " Serializable synp müşderisi statiki gutarnykly SerialVersionUID meýdançasyny " uzyn "
diýip yglan etmeýär ) . Bu makalada diňe bir Java-yň esaslaryny öwrenmek bilen çäklenmän , onuň seriallaşdyrma we seriallaşdyrma prosesine edýän täsirini hem öwrenersiňiz. Bir synp yglan edeniňizde, bellik interfeýsini ýerine ýetirişiňiz ýaly, Java iş wagty,
“Externalizable” interfeýsini ulanmak üçin prosesi düzmeseňiz, deslapky seriallaşdyryş mehanizmini ulanyp, şol synpyň mysalyny diskde saklaýar . Seriýalaşdyrma wagtynda, Java iş wagty synp üçin wersiýa belgisini döredýär, soň bolsa ony deserializasiýa edip biler. Java-da bu wersiýa belgisi diýilýär . Deserializasiýa wagtynda hiç hili gabat gelmeýän bolsa , " " akymda kadadan çykma bilen çykar we synpyň adyny we degişli görnüşini çap eder . Bu meseläni çözmek üçin çalt çözgüt, ony synpyňyzda hemişelik görnüş hökmünde göçürmek we kesgitlemekdir. Bu makalada näme üçin Java-da ulanmalydygymyzy we bu ID-ni döretmek üçin serwer JDK guralyny nädip ulanmalydygyny öwreneris. Seriýalaşdyrmak üçin täze bolsaňyz, bilimleriňize baha bermek we has giňişleýin okamak üçin düşünjäňizdäki boşluklary tapmak üçin
iň gowy 10 Java Serializasiýa Söhbetdeşlik soraglaryna tomaşa edip bilersiňiz. (Birmeňzeşlik) we (köp okamak) ýaly , (serializasiýa) birnäçe gezek okamaga mynasyp başga bir mowzuk.
SerialVersionUID
Serializable
SerialVersionUID
Serializable
Customer
SerialVersionUID
SerialVersionUID
Serializable
java.io.Serializable
SerialVersionUID
SerialVersionUID
InvalidClassException
main
java.io.InvalidClassException
SerialVersionUID
SerialVersionUID
private
static
final
long
SerialVersionUID
Concurrency
Multi-threading
Serialization
Näme üçin Java-da SerialVersionUID ulanyň
Aýdyşym ýaly, synpymyzdaky
SerialVersionUID
ýaly bahany kesgitlemedik wagtymyz , seriallaşdyrma mehanizmi muny biziň üçin eder.
static
final
long
Bu mehanizm köp jikme-jikliklere, şol sanda synpyňyzyň meýdanlaryna, giriş üýtgeýjilerine, ýerine ýetirýän interfeýslerine we hatda dürli düzüji ýerine ýetirişlerine-de duýgur; synpdaky islendik üýtgeşiklik ýa-da başga bir düzüjiniň ulanylmagy başga bir netije berip biler,
SerialVersionUID
netijede yzygiderli maglumatlaryň täzeden ýüklenmegini togtatyň. Bu idi döretmek üçin Java-yň seriallaşdyryş mehanizmine bil baglamak töwekgelçiliklidir, şonuň üçin ony
Serializable synpyňyzdaSerialVersionUID
aç -açan kesgitlemek gowy pikir . Java seriallaşdyrylyşyna we olary nädogry çözmegiň meselelerine düşünmek üçin Java klassiki -
Joşua Bloch “Netijeli Java” okamagy maslahat berýärin . Theeri gelende aýtsak, JDK kompýuterimde
JAVA_HOME katalogynyň
bin katalogynda ýerleşýän
C: \ Program Files \ Java \ jdk1.6.0_26 \ bin \ serialver.exe atly gural bilen üpjün edýär. köne synplar üçin. Synplaşdyrmagy bozýan we programmaňyz seriallaşdyrylan ýagdaýlary täzeden ýükläp bilmeýän bolsaňyz, synpyňyzda üýtgeşmeler girizen bolsaňyz, bu örän peýdalydyr. Köne mysallary döretmek üçin bu peýdany aňsatlyk bilen ulanyp bilersiňiz , soňra bolsa meýdançany
şahsy statiki jemleýji diýip yglan edip, aç - açan ulanyp bilersiňiz . Theeri gelende aýtsak, öndürijilik we howpsuzlyk sebäpleri üçin yzygiderli ikilik formatyny seriallaşdyrmak üçin ulanmak maslahat berilýär; ýene-de “Netijeli Java” -da adaty formatyň artykmaçlyklaryny görkezýän birnäçe abzas bar.
serialver
SerialVersionUID
SerialVersionUID
SerialVersionUID
SerialVersionUID döretmek üçin serialver JDK programmasyny nädip ulanmaly
Sapaklar üçin
serialver
döredip bilersiňiz .
SerialVersionUID
Bu esasanam sapaklary ösdürmek üçin peýdalydyr, peýdalylyk
SerialVersionUID
aňsat göçürme görnüşinde gaýdyp gelýär.
serialver
JDK kömekçisini mysalda görkezilişi ýaly ulanyp bilersiňiz :
$ serialver
use: serialver [-classpath classpath] [-show] [classname...]
$ serialver -classpath . Hello
Class Hello is not Serializable.
$ serialver -classpath . Hello
Hello: static final long SerialVersionUID = -4862926644813433707L;
Şeýle hem kömekçi programmany buýruk
serialver
hökmünde ulanyp bilersiňiz , bu synpyň doly adyny alýan we görkezýän inspektor açar .
GUI
$ serialver –show
serial version
Serial version
Gysgaça mazmun
Indi munuň nämedigini
SerialVersionUID
we näme üçin ony bir klasda yglan etmegiň möhümdigini bildik
Serializable
, Java SerialVersionUID bilen baglanyşykly käbir möhüm faktlary gözden geçirmegiň wagty geldi.
SerialVersionUID
yzygiderli maglumatlaryň wersiýasyny görkezmek üçin ulanylýar.
- Synpymyzda yglan etmedik wagtymyz
SerialVersionUID
, Java iş wagty muny biziň üçin edýär, ýöne bu amal synpyň köp metadatalaryna duýgur, meýdanlaryň sany, meýdanlaryň görnüşi, meýdan giriş üýtgeýjileri, synpda ýerine ýetirilýän interfeýsler. we ş.m. Takyk maglumatlary Oracle-dan Serializasiýa resminamalarynda tapyp bilersiňiz.
- SerialVersionUID-i deslapky mehanizmden gaça durmak üçin şahsy statiki gutarnykly uzyn üýtgeýji hökmünde yglan etmek maslahat berilýär. Eclipse ýaly käbir IDE-ler hem muny ýatdan çykarsaňyz duýduryş berýärler, mysal üçin: "Serializable synp müşderisi statiki gutarnykly SerialVersionUID görnüşini uzyn diýip yglan etmeýär." Bu duýduryşy Window> Saýlamalar> Java> Kompilýator> rorsalňyşlar / Duýduryşlar> Mümkin bolan programmirleme meselelerine girip öçürip bilersiňiz, muny etmezligi maslahat berýärin. Diňe maglumatlary dikeltmek talap edilmedik ýagdaýynda men bu barada biperwaý bolup bilerin. “Eclipse IDE” -de bu ýalňyşlygyň görnüşi, ine, ilkinji çalt karar bermek.
- Şeýle hem, Java-daky sapaklar üçin Serial wersiýasyny döretmek üçin JDK-dan serialwer programmasyny ulanyp bilersiňiz. Kömekçi enjamda GUI bar, ol - parametrden geçende açyk
show
.
- Seriallaşdyrmagyň iň oňat tejribesi,
SerialVersionUID
esasanam RMI ýaly seriýalaýyn maglumatlara daýanýan müşderi-serwer programmasy bilen işleýän bolsaňyz, seriallaşdyrma bilen baglanyşykly hiç hili kynçylykdan gaça durmak, aç-açan yglan etmekdir.
Bularyň hemmesi
SerialVersionUID
Java-da.
SerialVersionUID
Indi näme üçin synpda dogry yglan etmegiň möhümdigini bildik . Synpyňyzyň seriallaşdyrylmagyny bozup biljek bu ýatlatma üçin IDE-ä minnetdarlyk bildirip bilersiňiz. Seriýalaşdyrmak we baglanyşykly düşünjeler barada has giňişleýin maglumat almak isleseňiz, bu ajaýyp makalalary hem gözden geçirip bilersiňiz.
Asyl
şu ýerde
GO TO FULL VERSION