Cloneable 인터페이스를 마커인터페이스라한다. 아무런 구현할 메소드 선언하지 않고 어떤 일반적특성을가진 클래스임을 선언 하는데
사용(객체복제가 가능한 클래스임을 지정함)
아래예제에서 해시코드를 출력했는데 객체참조변수가 참조하는 힙영역의 객체가 같은 것이면 같은 해시코드 값을 가진다.
package onj;
//아래 Cloneable 인터페이스는 Marker 인터페이스, 객체복제가 가능하도록 한다.
class Person extends Object implements Cloneable {
String name;
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
class Person extends Object implements Cloneable {
String name;
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class CloneTest {
public static void main(String[] args) throws CloneNotSupportedException {
Person p = new Person();
p.name = "홍길동";
//Person이 Cloneable 인터페이스를 구현했으므로 복제가능
//Object형이 리턴되므로 Person으로 캐스팅해야 한다.
Person p2 = (Person) p.clone();
p2.name = "김길동";
//p2가 참조하는 객체를 p3도 참조
//힙영역의 같은 객체를 참조하므로 해시코드값도 같다.
Person p3 = p2;
System.out.println("p.name" + p.name);
System.out.println("p2.name" + p2.name);
System.out.println("p hashcode " + p.hashCode());
//아래 두 객체참조변수의 해시코드값은 같다.
System.out.println("p2 hashcode " + p2.hashCode());
System.out.println("p2 hashcode " + p3.hashCode());
}
}
public static void main(String[] args) throws CloneNotSupportedException {
Person p = new Person();
p.name = "홍길동";
//Person이 Cloneable 인터페이스를 구현했으므로 복제가능
//Object형이 리턴되므로 Person으로 캐스팅해야 한다.
Person p2 = (Person) p.clone();
p2.name = "김길동";
//p2가 참조하는 객체를 p3도 참조
//힙영역의 같은 객체를 참조하므로 해시코드값도 같다.
Person p3 = p2;
System.out.println("p.name" + p.name);
System.out.println("p2.name" + p2.name);
System.out.println("p hashcode " + p.hashCode());
//아래 두 객체참조변수의 해시코드값은 같다.
System.out.println("p2 hashcode " + p2.hashCode());
System.out.println("p2 hashcode " + p3.hashCode());
}
}
[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수
있습니다.]
오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[11/25]Spring3.X, MyBatis, Hibernate실무과정
[12/02]안드로이드개발자과정
[12/02]iPhone 하이브리드 앱 개발 실무과정
[12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
[12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
[12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
[01/06][기업100%환급]SQL기초에서 Schema Object까지
[평일야간]
[11/28]Spring3.X, MyBatis, Hibernate실무과정
[11/29]자바초보에서안드로이드까지
[12/02]JAVA&WEB프레임워자실무과정
[12/03]웹퍼블리싱 마스터
[12/03]iPhone하이브리드앱개발실무과정
[12/04]SQL초보에서실전전문가까지
[12/09]C#,ASP.NET마스터
[주말]
[11/30]SQL초보에서전문가까지
[11/30]C#,ASP.NET마스터
[12/07]Spring3.X,MyBatis,Hibernate실무과정
[12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[12/14]자바초보에서안드로이드까지
[12/14]웹퍼블리싱 마스터
오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[11/25]Spring3.X, MyBatis, Hibernate실무과정
[12/02]안드로이드개발자과정
[12/02]iPhone 하이브리드 앱 개발 실무과정
[12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
[12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
[12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
[01/06][기업100%환급]SQL기초에서 Schema Object까지
[평일야간]
[11/28]Spring3.X, MyBatis, Hibernate실무과정
[11/29]자바초보에서안드로이드까지
[12/02]JAVA&WEB프레임워자실무과정
[12/03]웹퍼블리싱 마스터
[12/03]iPhone하이브리드앱개발실무과정
[12/04]SQL초보에서실전전문가까지
[12/09]C#,ASP.NET마스터
[주말]
[11/30]SQL초보에서전문가까지
[11/30]C#,ASP.NET마스터
[12/07]Spring3.X,MyBatis,Hibernate실무과정
[12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[12/14]자바초보에서안드로이드까지
[12/14]웹퍼블리싱 마스터
댓글 없음:
댓글 쓰기