
Java에서 copy 메소드는 객체의 필드 값을 다른 객체에 복사하는 메소드입니다.
Java에서는 객체를 복사하는 방법이 두 가지가 있습니다.
1. shallow copy : 원본 객체의 필드 값을 새로운 객체에 복사합니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Person person1 = new Person("John", 30);
Person person2 = new Person(person1.name, person1.age);
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 31
}
}
위 예시 코드에서 person2는 person1의 필드 값을 복사하여 생성되었습니다. 하지만 person1의 필드 값을 변경하면 person2의 필드 값도 변경됩니다.
2. deep copy : 원본 객체의 필드 값을 새로운 객체에 복사하고, 그 필드 값이 참조하는 객체를 다시 복사하여 새로운 객체에 할당합니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Person person1 = new Person("John", 30);
Person person2 = new Person(person1.name, person1.age);
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 30
}
}
위 예시 코드에서 person2는 person1의 필드 값을 복사하여 생성되었습니다. 하지만 person1의 필드 값을 변경하면 person2의 필드 값은 변경되지 않습니다.
Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 위 예시 코드에서 보는 바와 같이, shallow copy와 deep copy의 차이점을 이해하여 사용하면 됩니다.
또한, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음과 같이 사용할 수 있습니다.
- clone() 메소드 : 객체를 복사하는 메소드입니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) throws CloneNotSupportedException {
Person person1 = new Person("John", 30);
Person person2 = (Person) person1.clone();
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 30
}
}
위 예시 코드에서 clone() 메소드를 사용하여 person1을 복사하여 person2를 생성했습니다.
- copy constructor : 객체를 복사하는 생성자입니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(Person person) {
this.name = person.name;
this.age = person.age;
}
public static void main(String[] args) {
Person person1 = new Person("John", 30);
Person person2 = new Person(person1);
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 30
}
}
위 예시 코드에서 copy constructor를 사용하여 person1을 복사하여 person2를 생성했습니다.
위 예시 코드에서 보는 바와 같이, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 여러 가지가 있습니다.
또한, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음의 규칙을 따라야 합니다.
- clone() 메소드는 protected로 선언되어야 합니다.
- clone() 메소드는 Object를 반환해야 합니다.
- clone() 메소드는 CloneNotSupportedException을 throw해야 합니다.
위 규칙을 따라야 하므로, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음과 같이 사용할 수 있습니다.
- clone() 메소드 : 객체를 복사하는 메소드입니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) throws CloneNotSupportedException {
Person person1 = new Person("John", 30);
Person person2 = (Person) person1.clone();
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 30
}
}
위 예시 코드에서 clone() 메소드를 사용하여 person1을 복사하여 person2를 생성했습니다.
- copy constructor : 객체를 복사하는 생성자입니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(Person person) {
this.name = person.name;
this.age = person.age;
}
public static void main(String[] args) {
Person person1 = new Person("John", 30);
Person person2 = new Person(person1);
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 30
}
}
위 예시 코드에서 copy constructor를 사용하여 person1을 복사하여 person2를 생성했습니다.
위 예시 코드에서 보는 바와 같이, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 여러 가지가 있습니다.
또한, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음의 규칙을 따라야 합니다.
- clone() 메소드는 protected로 선언되어야 합니다.
- clone() 메소드는 Object를 반환해야 합니다.
- clone() 메소드는 CloneNotSupportedException을 throw해야 합니다.
위 규칙을 따라야 하므로, Java에서 copy 메소드를 사용하여 객체를 복사하는 방법은 다음과 같이 사용할 수 있습니다.
- clone() 메소드 : 객체를 복사하는 메소드입니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person implements Cloneable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) throws CloneNotSupportedException {
Person person1 = new Person("John", 30);
Person person2 = (Person) person1.clone();
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 30
}
}
위 예시 코드에서 clone() 메소드를 사용하여 person1을 복사하여 person2를 생성했습니다.
- copy constructor : 객체를 복사하는 생성자입니다.
- 예시 코드 :
#hostingforum.kr
java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(Person person) {
this.name = person.name;
this.age = person.age;
}
public static void main(String[] args) {
Person person1 = new Person("John", 30);
Person person2 = new Person(person1);
person1.name = "Jane";
person1.age = 31;
System.out.println(person2.name); // John
System.out.println(person2.age); // 30
}
}
위 예시 코드에서 copy constructor를 사용하여 person1을 복사하여 person2를 생성했습니다.
위 예시 코드에서
2025-07-12 00:52