Шта је клонирање у Јави и његови типови?



Овај чланак о клонирању у Јави пружиће вам детаљан увид у процес клонирања и различите типове клонирања које Јава подржава.

Током програмирања, често наилазимо на сценарије у којима морамо поново користити комплетан комад кода. Преписивање кода чини програм гломазним, све док истовремено смањује ефикасност програма. Дакле, Јава нам пружа изврсну функцију која спашава овај тежак задатак. Ово је познато као Клонирање у Јави и посредством овог чланка даћу вам потпун увид у то.

Испод су теме о којима ћу расправљати у овом чланку:





Клонирање у Јави

Клонирање објеката у Јави је поступак стварања тачне копије оригиналног објекта. Другим речима, то је начин стварања новог објекта копирањем свих података и атрибута из оригиналног објекта. То је могуће само применом методе цлоне () методе јава.ланг.Објецт класа. Метода клонирања ствара тачну копију објекта за који је и билапозива се у редоследу доделе поља по поље и вратиће нову референцу објекта . Једне ствари које морате имати на уму, на Јави, објектима који имплементирају клонски интерфејс који је интерфејс маркера, је дозвољено да користе цлоне ().

контроверзе вештачке интелигенције за и против

Сад кад сте свесни шта се клонира у Јави, погледајмо разне предности коришћења ове функције.



Предности клонирања у Јави

Испод сам набројао неколико најзанимљивијих карактеристика коришћења клонирања у Јави.

  • Помаже у смањењу редова кода.
  • Најефикаснији и најефикаснији начин копирањапредмета.
  • Такође, клон () се сматра најбржим начином копирања низа.

Напомена: Иако би коришћење клонирања могло довести до неких проблема са дизајном, али ако га користите на одговарајући стратешки начин, могло би вам користити.

Врсте клонирања у Јави

Клонирање у Јави може се груписатиу две категорије:



  1. Плитко клонирање
  2. Дубоко клонирање

Хајде да разумемо сваку од њих једну по једну.

Плитко клонирање

У Јави, када се поступак клонирања врши позивањем методе цлоне (), назива се плитко клонирање. То је задати поступак клонирања у Јави где ће се створити плитка копија оригиналног објекта са тачним пољем. У случају да изворни објекат као поља садржи референце на неке друге објекте, тада ће се клонирати само референце тог објекта уместо стварања новог објекта. Другим речима, ако промените вредност клонираних објеката, то ће се одразити и на оригиналу. Дакле, плитко клонирање зависи од изворног предмета.

плитка копија - Клонирање у Јави - ЕдурекаИспод сам навео пример истог:

пакет едурека класа ЕдуЦоурсе {Стринг цоурсе1 Стринг цоурсе2 Стринг цоурсе3 публиц ЕдуЦоурсе (Стринг црс1, Стринг црс2, Стринг црс3) {тхис.цоурсе1 = црс1 тхис.цоурсе2 = црс2 тхис.цоурсе3 = црс3}} цласс ЕдуЛеарнер имплементира Цлонеабле {инт едуИд Стринг ЛеарнерНаме ЕдуЦоурсе едуЦоурсе јавни ЕдуЛеарнер (инт едуИд, Стринг ЛеарнерНаме, ЕдуЦоурсе едуЦоурсе) {тхис.едуИд = едуИд тхис.леарнерНаме = ЛеарнерНаме тхис.едуЦоурсе = едуЦоурсе} // Подразумевана верзија клона () метода заштићена Објецт цлоне () баца ЦлонеНотСуппортедЕкцептион {ретурн супер .цлоне ()}} јавна класа СхалловЦлонеСампле {публиц статиц воид маин (Стринг [] аргс) {ЕдуЦоурсе ј2ее = нев ЕдуЦоурсе ('Јава', 'Спринг', 'Мицросервицес') ЕдуЛеарнер ученик1 = нови ЕдуЛеарнер (2811, 'Мак' , ј2ее) ЕдуЛеарнер ученик2 = нулл три {// Стварање клона ученика1 и додељивање њему ученику2 ученик2 = (ЕдуЛеарнер) Леарнер1.цлоне ()} цатцх (ЦлонеНотСуппортедЕкцептион е) {е.принтСтацкТраце ()} // Детаљи штампања Леарнер1 Систем.оут.п ринтлн ('Детаљи о ученику 2:') Систем.оут.принтлн ('Ид:' + Леарнер1.едуИд) Систем.оут.принтлн ('Име:' + Леарнер1.леарнерНаме) Систем.оут.принтлн ('Ид курса: '+ Леарнер1.едуЦоурсе) // Штампање свих курсева система' Леарнер1 'Систем.оут.принтлн (' Курсеви ученика 1: ') Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе1) Систем.оут.принтлн (ученик1. едуЦоурсе.цоурсе2) Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе3) // Испис детаља о Леарнер2 Систем.оут.принтлн ('Детаљи о ученику 2:') Систем.оут.принтлн ('Ид:' + Леарнер2.едуИд ) Систем.оут.принтлн ('Име:' + Леарнер2.леарнерНаме) Систем.оут.принтлн ('Ид курса:' + Леарнер2.едуЦоурсе) // Штампање свих курсева 'Леарнер2' Систем.оут.принтлн ('Курсеви од Леарнер 2: ') Систем.оут.принтлн (Леарнер2.едуЦоурсе.цоурсе1) Систем.оут.принтлн (Леарнер2.едуЦоурсе.цоурсе2) Систем.оут.принтлн (Леарнер2.едуЦоурсе.цоурсе3) // Мењање курса3' Леарнер2 'Леарнер2.едуЦоурсе.цоурсе3 =' ЈСП '// Ова промена ће се одразити на оригиналном' Леарнер1 'Систем.оут.принтлн (' Ажурирани курсеви ученика 2: ') Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе1) Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе2) Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе3)}}

Излаз:

Детаљи о ученику 2: Ид: 2811 Име: Мак ИД курса: ЕдуЦоурсе @ 15дб9742 Курсеви ученика 1: Јава Спринг Мицросервицес Детаљи о ученику 2: Ид: 2811 Име: Мак ИД курса: ЕдуЦоурсе @ 15дб9742 Курсеви ученика 2: Јава Спринг Мицросервицес Ажурирани курсеви ученика 2: Јава Спринг ЈСП

Дубоко клонирање у Јави

У Јави, када се поступак клонирања врши применом интерфејса Цлонеабле, назива се дубоко клонирање. У овој врсти клонирања створиће се тачна копија свих поља оригиналног објекта. Али у случају да оригинални објекат има референце на друге објекте као поља, тада ће се створити и копија тих објеката позивањем методе цлоне (). То клонирани објекат чини независним од оригиналног објекта, а све промене направљене у било којем од објеката неће се одразити на другом.

како се користи подниз у јави

Испод сам навео пример истог:

пакет едурека класа ЕдуЦоурсе имплементира Цлонеабле {Стринг цоурсе1 Стринг цоурсе2 Стринг цоурсе3 публиц ЕдуЦоурсе (Стринг црс1, Стринг црс2, Стринг црс3) {тхис.цоурсе1 = црс1 тхис.цоурсе2 = црс2 тхис.цоурсе3 = црс3} заштићени клон објекта () баца ЦлонеНотСуппортедЕкцептион ретурн супер.цлоне ()}} класа ЕдуЛеарнер имплементира Цлонеабле {инт едуИд Стринг ЛеарнерНаме ЕдуЦоурсе едуЦоурсе публиц ЕдуЛеарнер (инт едуИд, Стринг ЛеарнерНаме, ЕдуЦоурсе едуЦоурсе) {тхис.едуИд = едуИд тхис.леарнерНаме = ЛеарнерНаме тхис.едуЦоурсе = едуЦоурсе} // Замена методе цлоне () за стварање дубинске копије објектно заштићеног Објецт цлоне () баца ЦлонеНотСуппортедЕкцептион {ЕдуЛеарнер ученик = (ЕдуЛеарнер) супер.цлоне () Леарнер.едуЦоурсе = (ЕдуЦоурсе) едуЦоурсе.цлоне () ретурн ученик}} јавна класа ДеепЦлонеСампле {публиц статиц воид маин (Стринг [] аргс) {ЕдуЦоурсе ј2ее = нев ЕдуЦоурсе ('Јава', 'Спринг', 'Мицросервицес') ЕдуЛеарнер ученик1 = нови ЕдуЛеарнер (2811, 'Мак', ј2ее) ЕдуЛеарнер леарн ер2 = нулл три {// Стварање клона ученика1 и додељивање њему ученику2 ученик2 = (ЕдуЛеарнер) Леарнер1.цлоне ()} цатцх (ЦлонеНотСуппортедЕкцептион е) {е.принтСтацкТраце ()} // Детаљи исписа Леарнер1 Систем.оут. принтлн ('Детаљи о ученику 2:') Систем.оут.принтлн ('Ид:' + Леарнер1.едуИд) Систем.оут.принтлн ('Име:' + Леарнер1.леарнерНаме) Систем.оут.принтлн ('Ид курса: '+ Леарнер1.едуЦоурсе) // Штампање свих курсева система' Леарнер1 'Систем.оут.принтлн (' Курсеви ученика 1: ') Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе1) Систем.оут.принтлн (ученик1. едуЦоурсе.цоурсе2) Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе3) // Испис детаља о Леарнер2 Систем.оут.принтлн ('Детаљи о ученику 2:') Систем.оут.принтлн ('Ид:' + Леарнер2.едуИд ) Систем.оут.принтлн ('Име:' + Леарнер2.леарнерНаме) Систем.оут.принтлн ('Ид курса:' + Леарнер2.едуЦоурсе) // Штампање свих курсева 'Леарнер2' Систем.оут.принтлн ('Курсеви ученика 2: ') Систем.оут.принтлн (Леарнер2.едуЦоурсе.цоурсе1) Систем.оут.принтл н (Леарнер2.едуЦоурсе.цоурсе2) Систем.оут.принтлн (Леарнер2.едуЦоурсе.цоурсе3) // Промена курса3 'Леарнер2' Леарнер2.едуЦоурсе.цоурсе3 = 'ЈСП' // Ова промена се неће одразити у оригиналу ' студент1 'Систем.оут.принтлн (' Курсеви ученика 1: ') Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе1) Систем.оут.принтлн (Леарнер1.едуЦоурсе.цоурсе2) Систем.оут.принтлн (Леарнер1.едуЦоурсе. цоурсе3) // Ажурирани курсеви ученика2 Систем.оут.принтлн ('Курсеви ученика 2:') Систем.оут.принтлн (Леарнер2.едуЦоурсе.цоурсе1) Систем.оут.принтлн (Леарнер2.едуЦоурсе.цоурсе2) Систем.оут. принтлн (студент.едуЦоурсе.цоурсе3)}}

Излаз:

Детаљи о ученику 2: Ид: 2811 Име: Мак Ид курса: едурека.ЕдуЦоурсе@15дб9742 Курсеви ученика 1: Јава Спринг Мицросервицес Детаљи ученика 2: Ид: 2811 Име: Мак ИД курса: едурека.ЕдуЦоурсе@6д06д69ц Курсеви ученика 2 : Јава Спринг Мицросервицес Курсеви ученика 1: Јава Спринг Мицросервицес Курсеви ученика 2: Јава Спринг ЈСП ЈСП

Ово нас доводи до краја овог чланка о Клонирању у Јави. Ако желите знати више о Јави, можете се обратити нашој .

како инсталирати пхп на Виндовс 7

Сада када сте схватили шта је клонирање у Јави, погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250 000 задовољних ученика раширених широм света. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА дизајниран је за студенте и професионалце који желе да буду Јава програмер. Курс је дизајниран да вам пружи почетну предност у Јава програмирању и обучи вас како за основне тако и за напредне Јава концепте, заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га помињете у одељку за коментаре овог чланка „Клонирање у Јави“ и јавићемо вам се што је пре могуће.