Paano Ko Kokopyahin ang isang Bagay sa Java

Paano Ko Kokopyahin Ang Isang Bagay Sa Java



Sa Java, ang pagkopya ng isang bagay ay magkakabisa kung saan may pangangailangan na gamitin ang mga naipatupad nang functionality sa code sa halip na ilapat muli ang mga ito mula sa simula. Gayundin, ito ay nakakatulong pagdating sa pag-update ng data batay sa mga nakapaloob na talaan. Sa ganitong paraan, binabawasan nito ang pagiging kumplikado ng code at epektibong paggamit ng mga mapagkukunan.

Ipapakita ng artikulong ito ang mga diskarte sa pagkopya ng isang bagay sa Java.

Paano Ko Kokopyahin ang isang Bagay sa Java?

Ang isang bagay ay maaaring kopyahin sa Java gamit ang mga sumusunod na diskarte:







I-access ang lahat ng mga klase sa loob ng “ java.util ” package bago lumipat sa mga halimbawa:



angkat java. gamitin . *;

Diskarte 1: Pagkopya ng isang Bagay sa Java Gamit ang 'Copy Constructor'

Ang ' Kopyahin ang Tagabuo ” lumilikha/tumutukoy sa isang bagay sa pamamagitan ng pagtukoy sa parehong bagay ng klase na nilikha dati.



Halimbawa
Inilalapat ng sumusunod na halimbawa ang 'Copy Constructor' upang kopyahin ang isang bagay:





pampubliko klase CopyObject {
int id ;
String lungsod ;
CopyObject ( int id , String lungsod ) {
ito . id = id ;
ito . lungsod = lungsod ; }
CopyObject ( CopyObject object ) {
ito . id = bagay. id ;
ito . lungsod = bagay. lungsod ; }
pampubliko walang bisa display ( ) {
Sistema. palabas . println ( 'ID ->' + ito . id ) ;
Sistema. palabas . println ( 'Lungsod ->' + ito . lungsod ) ; }
pampubliko static walang bisa pangunahing ( String [ ] args ) {
Input ng scanner = bago Scanner ( Sistema. sa ) ;
Sistema. palabas . println ( 'Ipasok ang id:' ) ;
int id = input. susunodInt ( ) ;
Sistema. palabas . println ( 'Pumasok sa lungsod:' ) ;
String lungsod = input. susunod ( ) ;
CopyObject object1 = bago CopyObject ( id , lungsod ) ;
CopyObject object2 = bago CopyObject ( bagay1 ) ;
Sistema. palabas . println ( 'Default na Bagay ->' ) ;
bagay1. display ( ) ;
Sistema. palabas . println ( 'Kinopya na Bagay ->' ) ;
bagay2. display ( ) ;
input. malapit na ( ) ;
} }

Sa snippet ng code sa itaas:

  • Gumawa ng klase na pinangalanang “ CopyObject ”.
  • Tukuyin ang nakasaad na mga variable ng miyembro ng klase.
  • Pagkatapos nito, lumikha ng isang parameterized class constructor na naglalaan ng mga naipasa na halaga sa tinukoy na mga variable sa pamamagitan ng ' ito ”.
  • Ngayon, lumikha ng ' Kopyahin ang Tagabuo ” na kumukuha ng isang bagay na ginawa nang uri ng klase bilang parameter nito na ipapasa bilang argumento sa ibang pagkakataon.
  • Gayundin, tukuyin ang function na ' display() ” na nagpapakita ng mga naipasa na halaga ng bagay.
  • Nasa ' pangunahing() ”, gumawa ng object na “Scanner” para payagan ang input ng user sa pamamagitan ng “ System.in ” parameter.
  • Gayundin, iugnay ang ' nextInt() 'at' susunod() ” na paraan para kunin ang mga input ng integer at string ng user, ayon sa pagkakabanggit.
  • Lumikha ng object ng klase sa pamamagitan ng “ bago 'keyword at ang' CopyObject() ” constructor na mayroong mga value ng input ng user bilang mga argumento nito.
  • Gayundin, lumikha ng isang kopya na bagay na mayroong nilikhang bagay bilang argumento nito upang ibalik ang mga kinopyang nilalaman sa pamamagitan ng pagtukoy sa tagabuo ng kopya ng klase.
  • Panghuli, tawagan ang ' display() ” function upang ipakita ang mga naipasa na value ng input ng user at isara ang “Scanner”.

Output



Sa output na ito, maaari itong ipahiwatig na ang isang kopya na bagay ay nilikha at ipinapakita nang naaayon.

Diskarte 2: Pagkopya ng Bagay sa Java Sa Pamamaraan ng “clone()”.

Ang ' clone() 'paraan ng' java.lang.Object 'Ang klase ay kumukuha ng isang bagay bilang isang parameter, lumilikha at nagbibigay ng kopya nito. Ang pamamaraang ito ay maaaring ipatupad upang kopyahin ang isang bagay sa pamamagitan ng pagsangguni sa nilikha na bagay (na kailangang kopyahin) at ang 'clone()' na pamamaraan.

Syntax

bagay. clone ( )

Ang pamamaraang ito ay nagbibigay ng isang kopya ng bagay at itinapon ang ' CloneNotSupportedException ” kung ang klase ng object ay hindi nagpapatupad/naglalapat ng “Cloneable” na interface.

Halimbawa
Pumunta sa mga sumusunod na linya ng code:

pampubliko klase CopyObject nagpapatupad Cloneable {
int id ;
String lungsod ;
CopyObject ( int id , String lungsod ) {
ito . id = id ;
ito . lungsod = lungsod ;
}
pampubliko walang bisa display ( ) {
Sistema. palabas . println ( 'ID ->' + ito . id ) ;
Sistema. palabas . println ( 'Lungsod ->' + ito . lungsod ) ;
}
pampubliko static walang bisa pangunahing ( String [ ] args ) nagtatapon CloneNotSupportedException {
Input ng scanner = bago Scanner ( Sistema. sa ) ;
Sistema. palabas . println ( 'Ipasok ang id:' ) ;
int id = input. susunodInt ( ) ;
Sistema. palabas . println ( 'Pumasok sa lungsod:' ) ;
String lungsod = input. susunod ( ) ;
CopyObject object1 = bago CopyObject ( id , lungsod ) ;
Sistema. palabas . println ( 'Default na Bagay ->' ) ;
bagay1. display ( ) ;
Sistema. palabas . println ( 'Kinopya na Bagay ->' ) ;
CopyObject object2 = ( CopyObject ) bagay1. clone ( ) ;
bagay2. display ( ) ;
input. malapit na ( ) ;
} }

Ayon sa block ng code sa itaas, gawin ang mga hakbang na nakasaad sa ibaba:

  • Alalahanin ang mga tinalakay na diskarte para sa pagtukoy ng isang klase, pagtukoy sa mga variable ng miyembro, paglikha ng isang parameterized class constructor (paglalaan ng mga naipasa na halaga), at pagtukoy ng isang function para sa pagpapakita ng mga halaga, ayon sa pagkakabanggit.
  • Ngayon, sa ' pangunahing() ”, sa katulad na paraan, ang gumagamit ay nag-input ng mga halaga at ipinapasa ang mga halagang ito sa nilikhang object ng klase at ipinapakita ang mga ito sa pamamagitan ng kaukulang function.
  • Pagkatapos nito, ang ' clone() Ang paraan ng ” ay magkakabisa na nauugnay sa nalikha nang bagay upang lumikha ng isang kopyang bagay.
  • Panghuli, ipakita ang kinopyang mga nilalaman ng bagay pati na rin sa pamamagitan ng tinalakay na function.

Output

Sa kinalabasan na ito, mapapansin na ang mga halaga ng input ng user ay ibinalik nang dalawang beses na may magkaparehong mga resulta, na tinitiyak na ang object ng klase ay nakopya nang naaangkop.

Konklusyon

Ang isang bagay ay maaaring kopyahin sa Java gamit ang ' Kopyahin ang Tagabuo ', o ang ' clone() ” paraan. Kinokopya ng dating diskarte ang object sa pamamagitan ng pagkuha ng nagawa na object bilang argumento ng copy constructor. Ang huling diskarte ay direktang nauugnay sa nilikha na object ng klase. Ang write-up na ito ay nagpakita ng mga diskarte upang kopyahin ang isang bagay sa Java.