Tämä artikkeli esittelee lähestymistapoja objektin kopioimiseen Javassa.
Kuinka kopioin objektin Javassa?
Objekti voidaan kopioida Javassa seuraavilla tavoilla:
Pääsy kaikkiin luokkiin ' java.util ”-paketti ennen kuin siirryt esimerkkeihin:
tuonti java. util . *;
Lähestymistapa 1: Objektin kopioiminen Javassa 'Copy Constructor' -sovelluksella
' Kopioi rakentaja ” luo/määrittää objektin viittaamalla aiemmin luotuun samaan luokkaobjektiin.
Esimerkki
Seuraava esimerkki soveltaa 'Copy Constructor' -ohjelmaa objektin kopioimiseen:
julkinen luokkaa KopioiObject {
int id ;
merkkijono kaupunki ;
KopioiObject ( int id , merkkijono kaupunki ) {
Tämä . id = id ;
Tämä . kaupunki = kaupunki ; }
KopioiObject ( CopyObject-objekti ) {
Tämä . id = esine. id ;
Tämä . kaupunki = esine. kaupunki ; }
julkinen mitätön näyttö ( ) {
Järjestelmä. ulos . println ( 'ID ->' + Tämä . id ) ;
Järjestelmä. ulos . println ( 'Kaupunki ->' + Tämä . kaupunki ) ; }
julkinen staattinen mitätön pää ( merkkijono [ ] args ) {
Skannerin tulo = Uusi Skanneri ( Järjestelmä. sisään ) ;
Järjestelmä. ulos . println ( 'Anna tunnus:' ) ;
int id = syöttö. nextInt ( ) ;
Järjestelmä. ulos . println ( 'Syötä kaupunkiin:' ) ;
merkkijono kaupunki = syöttö. Seuraava ( ) ;
CopyObject object1 = Uusi KopioiObject ( id , kaupunki ) ;
CopyObject object2 = Uusi KopioiObject ( objekti1 ) ;
Järjestelmä. ulos . println ( 'Oletusobjekti ->' ) ;
objekti1. näyttö ( ) ;
Järjestelmä. ulos . println ( 'Kopioitu objekti ->' ) ;
objekti 2. näyttö ( ) ;
syöttö. kiinni ( ) ;
} }
Yllä olevassa koodinpätkässä:
- Luo luokka nimeltä ' KopioiObject ”.
- Määritä luokan ilmoitetut jäsenmuuttujat.
- Luo sen jälkeen parametroitu luokkakonstruktori, joka varaa välitetyt arvot määritetyille muuttujille ' Tämä ”.
- Luo nyt ' Kopioi rakentaja ', joka ottaa parametriksi jo luodun luokkatyyppisen objektin, joka välitetään myöhemmin argumenttina.
- Määritä myös funktio ' näyttö() ', joka näyttää välitetyt objektiarvot.
- ' pää() ' -menetelmää, tee 'Skanneri' -objekti, jotta käyttäjä voi syöttää ' System.in ” parametri.
- Yhdistä myös ' nextInt() ' ja ' Seuraava() ' -menetelmiä ottaakseen käyttäjän syötteet kokonaisluvut ja merkkijonot.
- Luo luokkaobjekti ' Uusi 'avainsana ja ' CopyObject() ” konstruktori, jonka argumentteina käyttäjä syöttää arvoja.
- Luo myös kopioobjekti, jonka argumenttina on luotu objekti, joka palauttaa kopioidun sisällön viittaamalla luokan kopiokonstruktoriin.
- Lopuksi kutsu ' näyttö() ' -toiminto näyttää käyttäjän syöttämät arvot ja sulkee 'Skannerin'.
Lähtö
Tässä tulosteessa voidaan olettaa, että kopioobjekti luodaan ja näytetään vastaavasti.
Lähestymistapa 2: Objektin kopioiminen Javassa 'clone()'-menetelmällä
' klooni() 'menetelmä' java.lang.Object ” luokka ottaa objektin parametriksi, luo ja antaa siitä kopion. Tämä menetelmä voidaan toteuttaa kopioimaan objekti viittaamalla jo luotuun objektiin (joka on kopioitava) ja 'clone()'-menetelmään.
Syntaksi
esine. klooni ( )Tämä menetelmä antaa kopion objektista ja heittää ' CloneNotSupportedException ', jos objektin luokka ei toteuta / käytä 'Cloneable' -rajapintaa.
Esimerkki
Käy läpi alla olevat koodirivit:
int id ;
merkkijono kaupunki ;
KopioiObject ( int id , merkkijono kaupunki ) {
Tämä . id = id ;
Tämä . kaupunki = kaupunki ;
}
julkinen mitätön näyttö ( ) {
Järjestelmä. ulos . println ( 'ID ->' + Tämä . id ) ;
Järjestelmä. ulos . println ( 'Kaupunki ->' + Tämä . kaupunki ) ;
}
julkinen staattinen mitätön pää ( merkkijono [ ] args ) heittoja CloneNotSupportedException {
Skannerin tulo = Uusi Skanneri ( Järjestelmä. sisään ) ;
Järjestelmä. ulos . println ( 'Anna tunnus:' ) ;
int id = syöttö. nextInt ( ) ;
Järjestelmä. ulos . println ( 'Syötä kaupunkiin:' ) ;
merkkijono kaupunki = syöttö. Seuraava ( ) ;
CopyObject object1 = Uusi KopioiObject ( id , kaupunki ) ;
Järjestelmä. ulos . println ( 'Oletusobjekti ->' ) ;
objekti1. näyttö ( ) ;
Järjestelmä. ulos . println ( 'Kopioitu objekti ->' ) ;
CopyObject object2 = ( KopioiObject ) objekti1. klooni ( ) ;
objekti 2. näyttö ( ) ;
syöttö. kiinni ( ) ;
} }
Suorita alla mainitut vaiheet yllä olevan koodilohkon mukaisesti:
- Palaa mieleen käsitellyt lähestymistavat luokan määrittämiseen, jäsenmuuttujien määrittämiseen, parametroidun luokkakonstruktorin luomiseen (syötettujen arvojen allokointiin) ja arvojen näyttämiseen tarkoitetun funktion määrittämiseen.
- Nyt sisällä ' pää() Vastaavasti käyttäjä syöttää arvot ja välittää nämä arvot luodulle luokkaobjektille ja näyttää ne vastaavan funktion kautta.
- Sen jälkeen ' klooni() ” -menetelmä tulee voimaan, joka liittyy jo luotuun objektiin kopioobjektin luomiseksi.
- Näytä lopuksi myös kopioitu objektin sisältö käsitellyn toiminnon kautta.
Lähtö
Tässä tuloksessa voidaan havaita, että käyttäjän syöttämät arvot palautetaan kahdesti identtisillä tuloksilla, mikä varmistaa, että luokkaobjekti kopioidaan asianmukaisesti.
Johtopäätös
Objekti voidaan kopioida Javassa käyttämällä ' Kopioi rakentaja ', tai ' klooni() ”menetelmä. Edellinen lähestymistapa kopioi objektin ottamalla jo luodun objektin kopiokonstruktorin argumentiksi. Jälkimmäinen lähestymistapa liittyy suoraan luotuun luokkaobjektiin. Tämä kirjoitus osoitti lähestymistavat objektin kopioimiseen Javassa.