Java Object klon ()

Metoden Java Object klon () opretter en lav kopi af objektet.

Her betyder den lave kopi, at den opretter et nyt objekt og kopierer alle de felter og metoder, der er knyttet til objektet.

Metodens syntaks clone()er:

 object.clone()

clone () Parametre

Den clone()metode tager ikke nogen parametre.

klon () Returværdier

  • returnerer kopien af ​​objektet
  • kaster, CloneNotSupportedExceptionhvis objektets klasse ikke implementerer Cloneablegrænsefladen

Bemærk : ObjectKlassen implementeres ikke Cloneable. Derfor kan vi ikke kalde clone()metoden til Objectklassens objekt .

Eksempel 1: Java-klon ()

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 ) catch (Exception e) ( System.out.println(e); ) ) )

I ovenstående eksempel har vi oprettet en klasse ved navn Main. Klassen indeholder to feltnavn og version. Her har vi initialiseret klassefelterne ved hjælp af objektets obj1 fra klassen.

Bemærk linjen,

 Main obj2 = (Main)obj1.clone();

Her har vi brugt clone()metoden til at oprette kopi af obj1. Den værdi, der returneres af clone(), tildeles objektet obj2. Da returværdien af clone()er Objecttype, har vi brugt (Main)til at konvertere den til hovedtype.

Nu kan man få adgang til feltnavn og version ved hjælp af objektet obj2. Men hvis vi ændrer værdien af ​​felterne ved hjælp af obj2, ændres værdien tilknyttet obj1 ikke.

Eksempel 2: Ændring af værdi ved hjælp af klonet objekt

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create a clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 // changing value of name // using obj2 obj2.name = "Python"; System.out.println(obj2.name); // Python // check if value associated // with obj1 is changed System.out.println(obj1.name); // Java ) catch (Exception e) ( System.out.println(e); ) ) )

Bemærk linjen,

 obj2.name = "Python";

Her har vi ændret værdien af ​​variablen ved hjælp af obj2. Når vi nu udskriver variabelnavnet for både obj1 og obj2, kan vi se, at værdien for obj1 ikke er ændret. Det er fordi clone()metoden laver en lav kopi af objekterne.

Hvis du vil vide mere om lav kopi, skal du gå til Hvad er lav kopi i Java?

Vi har lukket clone()metoden inde i Java prøve … fangstblok. Det er fordi underklasse kan kaste undtagelsen, hvis objektet ikke kan klones.

Bemærk : ObjectKlassen er superklassen for alle klasser i Java. Derfor kan hver klasse og arrays implementere clone()metoden.

Interessante artikler...