Metoda Java Object clone () stvara plitku kopiju objekta.
Ovdje plitka kopija znači da stvara novi objekt i kopira sva polja i metode povezane s objektom.
Sintaksa clone()metode je:
object.clone()
clone () Parametri
clone()Metoda ne poduzimati nikakve parametre.
clone () Povratne vrijednosti
- vraća kopiju predmeta
- baca
CloneNotSupportedExceptionako klasa objekta ne implementiraCloneablesučelje
Napomena : ObjectKlasa se ne provodi Cloneable. Stoga ne možemo pozvati clone()metodu za objekt Objectklase.
Primjer 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); ) ) )
U gornjem primjeru stvorili smo klasu pod nazivom Main. Klasa uključuje dva polja naziv i verziju. Ovdje smo inicijalizirali polja klase pomoću objekta obj1 klase.
Primijetite crtu,
Main obj2 = (Main)obj1.clone();
Ovdje smo koristili clone()metodu za stvaranje kopije obj1. Vrijednost koju clone()je vratio dodjeljuje se objektu obj2. Budući da je povratak vrijednost clone()je Objecttipa, koristili smo (Main)ga pretvoriti u glavnom tipa.
Sada se imenu i verziji polja može pristupiti pomoću objekta obj2. Međutim, ako promijenimo vrijednost polja pomoću obj2, vrijednost povezana s obj1 neće se promijeniti.
Primjer 2: Promjena vrijednosti pomoću kloniranog objekta
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); ) ) )
Primijetite crtu,
obj2.name = "Python";
Ovdje smo promijenili vrijednost varijable pomoću obj2. Sada kada ispisujemo ime varijable i za obj1 i za obj2, možemo vidjeti da se vrijednost za obj1 nije promijenila. To je zato što clone()metoda pravi plitku kopiju predmeta.
Da biste saznali više o plitkom kopiranju, posjetite Što je plitko kopiranje u Javi?
clone()Metodu smo zatvorili u blok Java try … catch. To je zato što podrazred može izbaciti iznimku ako se objekt ne može klonirati.
Napomena : ObjectRazred je superrazred za sve razrede u Javi. Dakle, svaka klasa i nizovi mogu implementirati clone()metodu.








