Java에서 참조로 매개변수 전달
Java에서는 모든 매개변수가 값으로 전달되는데, 이는 직관에 반하는 것처럼 보일 수 있습니다. 특히 참조별 전달을 지원하는 C#과 같은 언어에서 유래되었습니다. 그러나 내부 의미는 약간 다릅니다.
Java가 참조 유형을 처리하는 방법
참조 유형 매개변수(예: 객체)의 경우 Java는 참조를 전달합니다. 그 자체로 가치가 있습니다. 따라서 메소드 내의 할당이 메소드 외부의 참조에 영향을 미치므로 참조에 의한 전달인 것처럼 보입니다.
그러나 전달된 참조는 메소드에 사용된 참조와 동일하지 않다는 점에 유의하는 것이 중요합니다. 호출 방법.
값별 전달 증명
다음을 고려하세요. 예:
Object o = "Hello"; mutate(o); System.out.println(o); private void mutate(Object o) { o = "Goodbye"; } //NOT THE SAME o!
이 코드는 mutate() 메서드가 o 참조를 "Goodbye"로 수정하려고 시도하더라도 "Hello"를 콘솔에 인쇄합니다. 이는 mutate()에 전달된 참조가 원래 o 참조와 동일하지 않으며 값별 전달 의미 체계를 지원함을 보여줍니다.
실제 참조 전달 옵션
진정한 참조별 전달 동작을 달성하려면 다음 접근 방식을 사용할 수 있습니다.
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); //Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
이 경우 AtomicReference는 객체 주위에 래퍼를 제공하며 해당 참조는 실제로 값으로 전달됩니다. mutate() 내의 참조에 대한 할당은 메서드 외부의 참조에 영향을 미치므로 원하는 참조별 전달 동작이 발생합니다.
위 내용은 Java는 매개변수를 참조로 전달합니까, 아니면 값으로 전달합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!