JavaRush /Blog Jawa /Random-JV /Antarmuka - panandha
dupliaka
tingkat
Санкт-Петербург

Antarmuka - panandha

Diterbitake ing grup
Antarmuka panandha minangka pola desain kanthi mriksa jinis run-time sing ngidini sampeyan nggandhengake antarmuka lan kelas. Kanggo mangerteni apa iki bisa uga perlu, nimbang conto menehi tandha kelas Serializible karo panandha. Ayo nganggep yen kita kudu nyimpen kahanan obyek ing memori, banjur uga bisa dekripsi apa sing disimpen. Banjur, sampeyan ngomong, kita bisa ngowahi obyek kita dadi set bit. bener. Kita bisa nggunakake cara prasaja nulis menyang file nggunakake FileInputStream, nanging iki mung trep yen ana sawetara obyek, nanging apa yen ana akeh? Ana alat serialization apik kanggo iki. Aturan utama nalika sampeyan nggunakake iku obyek sing serialized kudu ngemot kabeh data lan ora ngrujuk menyang obyek liyane. Delengen kelas sampeyan "Aha, kolom kasebut ora dirujuk lan apik kanggo nyelehake tandha Serializable." Lan nalika sampeyan sijine iku, iku bakal tegese obyek sing ditandhani bisa ditulis kanggo ObjectOutputStream. Kelas ObjectOutputStream nduweni cara writeObject0 (), lan ngemot instanceof mriksa sing mriksa apa obyek bisa ditulis lan yen kabeh seri saka mriksa gagal, banjur istiméwa NotSerializableException dibuwang, lan yen ora, kabeh wis ditulis rapi ing memori. Ayo nggawe kelas BigObject, conto sing bakal kita serialize. package post1; import java.io.Serializable; public class BigObject implements Serializable { private int id; public void setId(final int id){ this.id = id; } public int getId() { return id; } } Kelas BigObject wis ditandhani minangka Serializable. Nduwe siji lapangan id lan metode get/set. package post1; import post1.BigObject; import java.io.*; public class InterfaceMarker { public static void main(String[] args) throws IOException, ClassNotFoundException { int originalId = 12; BigObject objectOriginal = new BigObject(); objectOriginal.setId(originalId); ByteArrayOutputStream writeBuffer = new ByteArrayOutputStream(); ObjectOutputStream outputStream = new ObjectOutputStream(writeBuffer); outputStream.writeObject(objectOriginal); outputStream.close(); byte[] buffer = writeBuffer.toByteArray(); ByteArrayInputStream readBuffer = new ByteArrayInputStream(buffer); ObjectInputStream inputStream = new ObjectInputStream(readBuffer); BigObject objectCopy = (BigObject)inputStream.readObject(); if (objectCopy.getId() == originalId) System.out.println( "originalId equals copiedId"); } }

Ngrekam obyek

Pisanan, kita nggawe obyek saka kelas serializable BigObject, banjur kita nyiyapake buffer data kanggo iku - Panggonan ngendi kita bakal sijine kabeh busur ByteArrayOutputStream. Banjur kita nyiapake ObjectOutputStream sing wis kasebut lan pass buffer menyang. Kita nulis obyek menyang stream lan nutup.

Maca obyek

Ayo nyiyapake nulis buffer readBuffer, pass inputStream, maca readObject (). Objek kasebut saiki wis dibalekake. Thanks kanggo kasunyatan manawa kolom `id` dudu link, kita bisa menehi tandha kelas Serializable, sing ngemot data lengkap. Tinimbang nambahake fungsi validasi ing kelas kita, token ngidini kita nyederhanakake proses validasi kelas.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION