Cloning
means makes an identical copy of something. Object class provides
clone() method to perform cloning.
If you
want to clone an object 'obj' of class 'A', then class 'A'must
implement the Cloneable interface. If a class implements Cloneable
interface, then it is making sure that calling clone method on
objects of this class is valid. If you tries to use clone method
without implementing Cloneable interface, then
'java.lang.CloneNotSupportedException' thrown.
class Laptop implements Cloneable{ String processor = "4th Gen Intel Core i3"; double screenSize = 43.9; int ramSize = 6; int hardDiskSize = 500; String brand = "XPS"; String videoCard = "Integrated Graphics"; public void setProcesstor(String processor){ this.processor = processor; } public void setScreenSize(double screenSize){ this.screenSize = screenSize; } public void setRAM(int ramSize){ this.ramSize = ramSize; } public void setHardDist(int hardDiskSize){ this.hardDiskSize = hardDiskSize; } public void setBrand(String brand){ this.brand = brand; } public void setVideoCard(String videoCard){ this.videoCard = videoCard; } @Override public Object clone() throws CloneNotSupportedException{ return super.clone(); } @Override public String toString(){ StringBuilder str = new StringBuilder(); str.append("----------------------------"); str.append("\nYour laptop configuration"); str.append("\n----------------------------"); str.append("\nProcessor :" + processor ); str.append("\nscreenSize :" + screenSize +"cm" ); str.append("\nramSize :" + ramSize +"GB"); str.append("\nhardDiskSize :" + hardDiskSize +"GB" ); str.append("\nbrand :" + brand ); str.append("\nvideoCard :" + videoCard ); return str.toString(); } @Override public boolean equals(Object obj){ if(obj != null){ if(obj instanceof Laptop){ Laptop lap = (Laptop) obj; return (this.brand.equals(lap.brand) && this.hardDiskSize == lap.hardDiskSize && this.processor.equals(lap.processor)&& this.ramSize == lap.ramSize && this.screenSize == lap.screenSize && this.videoCard.equals(lap.videoCard)); } } return false; } }
public class CloningEx { public static void main(String args[]) throws CloneNotSupportedException{ Laptop lap1 = new Laptop(); lap1.setProcesstor("4th Gen Intel Core i7"); lap1.setBrand("Alienware"); lap1.setHardDist(1000); lap1.setRAM(8); lap1.setScreenSize(43.9); lap1.setVideoCard("Integrated Graphics"); Laptop lap2 = (Laptop)lap1.clone(); System.out.println(lap1); System.out.println(lap2); System.out.println("lap1.equals(lap2) :" + lap1.equals(lap2)); System.out.println("lap1==lap2 :" + (lap1==lap2)); System.out.print("Is lap1 and lap2 belongs to sameclass :"); System.out.println((lap1.getClass().equals(lap2.getClass()))); } }
Output
---------------------------- Your laptop configuration ---------------------------- Processor :4th Gen Intel Core i7 screenSize :43.9cm ramSize :8GB hardDiskSize :1000GB brand :Alienware videoCard :Integrated Graphics ---------------------------- Your laptop configuration ---------------------------- Processor :4th Gen Intel Core i7 screenSize :43.9cm ramSize :8GB hardDiskSize :1000GB brand :Alienware videoCard :Integrated Graphics lap1.equals(lap2) :true lap1==lap2 :false Is lap1 and lap2 belongs to sameclass :true
No comments:
Post a Comment