Јава Објецт цлоне ()

Метода Јава Објецт цлоне () креира плитку копију објекта.

Овде плитка копија значи да ствара нови објекат и копира сва поља и методе повезане са објектом.

Синтакса clone()методе је:

 object.clone()

цлоне () Параметри

clone()Метод не узима никакве параметре.

цлоне () Повратне вредности

  • враћа копију предмета
  • баца CloneNotSupportedExceptionако класа објекта не имплементира Cloneableинтерфејс

Напомена : ObjectКласа не примењује Cloneable. Стога не можемо позвати clone()методу за објекат Objectкласе.

Пример 1: Јава клон ()

 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); ) ) )

У горњем примеру смо креирали класу која се зове Маин. Предмет садржи два поља, назив и верзију. Овде смо иницијализовали поља класе помоћу објекта обј1 класе.

Обратите пажњу на линију,

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

Овде смо користили clone()методу за креирање копије обј1. Вредност коју clone()је вратио додељује се објекту обј2. Пошто је повратна вредност clone()је Objectтипа, користили смо (Main)да га претворити у главној врсти.

Сада се имену и верзији поља може приступити помоћу објекта обј2. Међутим, ако променимо вредност поља помоћу обј2, вредност повезана са обј1 неће бити промењена.

Пример 2: Промена вредности помоћу клонираног објекта

 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); ) ) )

Обратите пажњу на линију,

 obj2.name = "Python";

Овде смо променили вредност променљиве помоћу обј2. Сада када исписујемо име променљиве и за обј1 и за обј2, можемо видети да се вредност за обј1 није променила. То је зато што clone()метода прави плитку копију предмета.

Да бисте сазнали више о плитком копирању, посетите Шта је плитко копирање на Јави?

Приложили смо clone()методу у блок Јава три … цатцх. То је зато што поткласа може да изузме изузетак ако објекат не може да се клонира.

Напомена : ObjectКласа је суперкласа за све класе у Јави. Дакле, свака класа и низови могу применити clone()методу.

Занимљиви Чланци...