더북(TheBook)

자바에서는 기본 타입 매개변수를 업데이트하는 메서드를 작성할 수 없다. 예를 들어 다음과 같이 double 값을 증가시키는 메서드는 의도한 대로 작동하지 않는다.

public void increaseRandomly(double x) { / / 의도한 대로 작동하지 않는다.

    double amount = x * generator.nextDouble();

    x += amount;

}


다음과 같이 호출한다고 하자.

boss.increaseRandomly(sales);


그러면 salesx로 복사된다. 다음으로 x를 증가시키지만 sales는 변하지 않는다. 이후 매개변수는 유효 범위를 벗어나고 증가 연산은 효력을 잃는다.

같은 이유로 객체 참조를 다른 것으로 바꾸는 메서드도 작성할 수 없다. 예를 들어 다음 메서드는 의도한 대로 작동하지 않는다.

public class EvilManager {

    ...

    public void replaceWithZombie(Employee e) {

        e = new Employee("", 0);

    }

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.