Cara clone lan antarmuka Cloneable - 1

"Hai, Amigo!"

"Halo, Kim."

"Aku arep ngomong babagan metode clone ()."

"Intine metode iki yaiku kanggo kloning obyek, utawa kanthi tembung liya, nggawe klon / salinan / duplikat obyek kasebut."

"Nalika metode iki diarani, mesin virtual Java nggawe lan ngasilake duplikat obyek sing diarani.

Implementasi kelas Obyek saka metode klon banget primitif: mung siji obyek anyar sing digawe, lan nilai kolom obyek asli ditugasake menyang lapangan.

Yen obyek sing disalin ngemot referensi menyang obyek liya, mula referensi kasebut bakal disalin. Duplikat obyek kasebut ora bakal digawe."

"Hmm. Iku ora akeh kanggo nerusake."

"Iku, mesin virtual Jawa ora ngerti obyek sing bisa utawa ora bisa dikloning. Contone, file ora bisa dikloning. Padha bener kanggo stream System.in."

"Dadi, pitakonan kloning lengkap iki punted kanggo pangembang kelas. "Iki kabeh padha carane cara witjaksono ditangani. Malah ana sing bisa dibandhingake karo hashCode: antarmuka Cloneable.

" Antarmuka Cloneable yaiku sing diarani 'antarmuka panandha': ora ana cara lan digunakake kanggo menehi tandha kelas tartamtu.

"Yen pangembang kelas pracaya obyek saka kelas bisa kloning, kang menehi tandha karo antarmuka iki (IE ndadekake kelas ngleksanakake Cloneable)."

"Yen pangembang ora seneng karo implementasi standar metode klon, dheweke kudu nulis dhewe sing bakal nggawe obyek duplikat kanthi cara sing bener."

"Nalika sampeyan nelpon cara Klone (), Jawa mriksa apa obyek ndhukung antarmuka Cloneable. Yen mengkono, banjur Klone obyek nggunakake cara Klone (); yen ora, mbalang CloneNotSupportedException ".

"Ing tembung liyane, kita kudu salah siji ngganti cara Klone utawa nggawe kelas ngleksanakake Cloneable?"

"Ya, nanging sampeyan isih kudu ngatasi cara kasebut. Cara klone () diumumake minangka dilindhungi, mula mung bisa diarani kelas ing paket kasebut (java.lang.*) utawa subkelase."

"Aku rada bingung - dadi apa sing kudu daklakoni kanggo nggawe kloning obyek?"

Yen sampeyan pengin nggunakake metode kloning «standar» kelas Obyek, sampeyan kudu:

" a) Tambah antarmuka Cloneable menyang kelas sampeyan"

" b) Ganti metode klon lan nelpon implementasi superclass ing implementasine sampeyan:"

class Point implements Cloneable
{
 int x;
 int y;

 public Object clone()
 {
  return super.clone();
 }
    }

"Utawa sampeyan bisa nulis implementasine metode klon kanthi dhewe:"

class Point
{
 int x;
 int y;

 public Object clone()
 {
  Point point = new Point();
  point.x = this.x;
  point.y = this.y;
  return point;
 }
}

"Iku cara sing menarik. Aku mesthi bakal nggunakake. Kadhangkala…"