728x90
반응형
질문 : Java에서 객체를 어떻게 복사합니까?
아래 코드를 고려하십시오.
DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'
DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'
dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'
dum
을 dumtwo에 복사하고 dumtwo
영향을주지 않고 dum
을 변경 dumtwo
. 그러나 위의 코드는 그렇게하지 않습니다. dum
에서 무언가를 변경하면 dumtwo
에서도 동일한 변화가 발생합니다.
dumtwo = dum
이라고 말하면 Java는 참조 만 복사합니다. dum
의 새 복사본을 만들고 dumtwo
할당하는 방법이 있습니까?
답변
복사 생성자를 만듭니다.
class DummyBean {
private String dummy;
public DummyBean(DummyBean another) {
this.dummy = another.dummy; // you can access
}
}
모든 개체에는 개체를 복사하는 데 사용할 수있는 복제 방법도 있지만 사용하지 마십시오. 클래스를 만들고 부적절한 복제 방법을 수행하는 것은 너무 쉽습니다. 그렇게하려고한다면, 적어도 Joshua Bloch가 Effective Java 에서 그것에 대해 말한 것을 읽으십시오.
출처 : https://stackoverflow.com/questions/869033/how-do-i-copy-an-object-in-java
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
"java.lang.OutOfMemoryError : PermGen 공간"오류 처리 (0) | 2021.07.14 |
---|---|
Java에서 바이트 크기를 사람이 읽을 수있는 형식으로 변환하는 방법 (0) | 2021.07.14 |
Java에서 C++ Pairl에 해당하는 것 (0) | 2021.07.12 |
다중 JFrame의 사용 : 좋은 습관인가? 나쁜 습관인가? (0) | 2021.07.08 |
Java에서 올바른 마이크로 벤치 마크를 작성하는 방법 (0) | 2021.07.06 |