Метода Јава Објецт цлоне () креира плитку копију објекта.
Овде плитка копија значи да ствара нови објекат и копира сва поља и методе повезане са објектом.
Синтакса 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()
методу.