자바에서 매개변수로 레퍼런스를 전달하려면 어떻게 해야하죠


C#에서는 레퍼런스를 쓸때 ref라는 키워드를 쓰잖아요 자바에는 이런게 있나요?

  • 2016년 02월 07일에 작성됨

조회수 183


1 답변


좋아요
0
싫어요
채택취소하기

자바에서는 모든게 콜바이 벨류라서 많은 사람들이 혼란스러워 합니다.

Object o = "Hello";
mutate(o)
System.out.println(o);

private void mutate(Object o) { o = "Goodbye"; } //매개변수 o와 전달한 o는 다른 객체다.

이런식으로 보통은 객체를 전달했을때 레퍼런스를 전달한거라고 착각하지만 실제로는 객체의 값을 전달하는 거라서 원래 o는 Goodbye로 바뀌지 않고 Hello가 출력될것입니다. 위의 코드에서 Goodbye가 출력되길 원하신다면

AtomicReference<Object> ref = new AtomicReference<Object>("Hello");
mutate(ref);
System.out.println(ref.get()); //Goodbye!

private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }

이런식으로 레퍼런스임을 명시적으로 알려주셔야합니다.

  • 2016년 02월 07일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close