Java에서 참조로 매개변수 전달: 가능합니까?
Java에는 C#과 같은 명시적인 ref 키워드가 없지만 다음 사항이 중요합니다. 매개변수는 항상 값으로 전달된다는 점을 이해하세요. 그러나 참조 유형 매개변수(예: 객체)를 전달하면 객체 자체에 대한 참조가 전달되어 참조별 전달 동작을 효과적으로 모방합니다.
Pass-by -값 대 참조에 의한 명백한 전달:
다음을 고려하세요. 코드:
Object o = "Hello"; mutate(o); System.out.println(o); private void mutate(Object o) { o = "Goodbye"; }
이 코드는 "Hello"를 콘솔에 인쇄하여 개체의 참조 값이 변경되지 않음을 보여줍니다. 이는 Java가 기본 유형과 객체에 대한 참조를 값으로 전달하기 때문입니다.
참조별 전달 의미 체계 달성:
수정을 허용하여 참조로 객체를 실제로 전달하려면 호출 코드에 반영될 메서드 내에서는 아래 설명과 같이 명시적 참조를 사용해야 합니다.
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); // Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
이것은 코드는 콘솔에 "Goodbye"를 인쇄하여 참조 자체가 수정되었고 변경 사항이 호출 코드에 다시 전파되었음을 나타냅니다.
결론:
Java는 그렇지 않습니다. 본질적으로 매개변수에 대한 참조별 전달을 지원하지 않습니다. 그러나 AtomicReference와 같은 명시적 참조 및 구성을 사용하면 유사한 의미 체계를 달성하고 기본 개체를 참조로 수정하여 참조별 전달 동작을 효과적으로 모방할 수 있습니다.
위 내용은 Java는 Pass-by-Reference를 지원합니까? 그렇지 않은 경우 어떻게 시뮬레이션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!