[MyString 실습 인스턴스 중복 생성 문의] MyString.setString(String param)
선생님 안녕하십니까
public void setString(String param) {
string = param.getBytes().clone();
}getBytes() 메서드 호출 시점에 [] bytes 인스턴스가 새로 생성 되었으나 이후에 clone() 메서드를 호출하는 것은 getBytes()로 새로 생성한 인스턴스에 대한 또 다른 인스턴스를 생성하는 것이므로 이는 중복 생성이 아닌가.. 하는 생각이 들어 여쭙고자 합니다.
제 생각에는 매개변수의 타입이 [] bytes 임을 전제로 하시고 말씀하신것 같습니다만 말씀하시는 내용과 코드가 달라 혹여 수강생들에게 혼란을 주지 않을까 싶어 질문으로 남깁니다.

혹여나 제가 잘못 생각한 부분이 있다면 따끔히 지적 부탁드립니다.
항상 좋은 상의 만들어주셔서 감사합니다 (꾸벅)
Answer 2
1
안녕하세요, 인프런 AI 인턴입니다. ygu9907님!
문의해주신 내용은 Java의 getBytes() 메서드와 그 결과의 clone() 적용에 관한 것입니다. 이해하신대로, getBytes() 메서드를 호출하면 String 객체의 내용을 바이트 배열로 인코딩하여 새로운 바이트 배열 인스턴스를 생성하게 됩니다. 그 후 clone() 메서드를 호출하면, 이미 생성된 바이트 배열을 복사하여 또 다른 새로운 인스턴스를 생성하게 되므로, 말씀하신 대로 결과적으로 두 번의 인스턴스 생성이 이루어집니다.
이러한 중복 생성은 특히 깊은 복사 작업을 위한 코드 명확성이나 디버깅을 쉽게 하기 위한 의도로 사용되기도 합니다. 예를 들어, 다른 개발자가 해당 코드 부분을 읽을 때 의도적으로 복사본을 사용하려는 개발자의 의도를 명확히 알 수 있기 때문입니다.
다만, 성능을 최적화해야 하는 상황에서는 불필요한 객체 생성을 최소화하는 방향으로 고려할 수도 있습니다. 따라서 특정 상황에 따라 달리 접근할 필요가 있으며, 코드에 기재된 기능의 목적에 따라 clone 사용을 다르게 적용할 수 있습니다.
이와 유사한 다른 질문을 참고하여 더 깊이 이해하고 싶으시다면, 아래 링크들을 확인해보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0
아니오. 잘못 생각하신 것이 아니고 불필요한 clone() 호출이 맞습니다. 본인이 생각하신 내용이 맞다는 것을 확인드립니다. 예제의 오류는 향후 강의를 개정하는 과정에 반영하도록 하겠습니다. 고맙습니다. 😄
compareTo를 사용하는 이유가 뭔가요?
0
46
1
[실습] MyString에 복사 생성자 추가
0
38
1
안녕하세요~ 회수라는 의미에 대해서 질문합니다.
0
71
1
equals의 재정의(overriding)에 대해서
0
80
2
TestEx 객체 생성 시 생성자 호출 질문
0
62
2
주소록 실습 3단계에서 막혔어서 조언을 구하려고 질문 드립니다.
0
85
2
해시 알고리즘 관련으로 질문이 있습니다.
0
73
2
21분 경 Old generation의 GC 설명 질문입니다.
0
102
3
임시 객체의 첫 번째 상황에 대한 질문
0
70
2
String 객체가 하나 더 생성되는 이유가 궁금합니다
0
190
3
하위 클래스와 상위 클래스의 생성자 순서
0
105
2
GC의 age와 관련하여 질문 있습니다.
0
97
2
Object Header 의 Klass word (39강 36:00)
0
115
2
method area는 이름이 class area가 아니고 왜 method aread인지 궁금합니다.
0
139
2
교안 p.305 'throw 필수' 질문
0
81
1
Metaspace에 대한 질문
0
258
2
clone() 메서드를 재정의함으로써 Deep copy로 구현한다로 이해하면 될까요?
0
120
2
MyListEx 질문드립니다.
1
136
1
part3 강의 개강
0
197
2
문자열 비교 강좌에서 문자열 선언 방법 간에 hashCode() 값 관련한 질문입니다.
0
222
2
상속과 오지랖의 콜라보 예제에서 clone() 메서드에 대한 문의드립니다.
1
182
2
보이지 않는 임시 객체의 자막 수정 요청
0
116
2
스레드 관련해서 질문이 있습니다.
0
203
1
metaspace 관련 문의드립니다.
0
199
2

