피드백 받은 사항 중에 상수를 public
으로 지정한 것과 변경이 필요하지 않은 변수에는 final
을 쓰라는 내용이 있었다.
final 키워드는 변수, 메서드, 클래스에 사용할 수 있다. 사용되는 곳에 따라 다른 의미를 가지지만 공통적으로 무언가를 제한한다는 의미를 갖는다.
변수에 final이 붙으면 수정할 수 없다는 의미를 갖는다. 수정할 수 없기 때문에 초기화 값은 필수적이지만, 생성자에서 선언할 수도 있습니다. 생성자는 final 필드의 최종 초기화를 마쳐야 하는데 만약 초기화가 되지 않은 final 필드가 있다면 컴파일 에러가 발생합니다.
수정 할 수 없다는 범위는 그 변수의 값에 한정합니다. 즉, 다른 객체를 참조하거나 할 때 참조하는 객체의 내부의 값은 변경할 수 있다라는 의미입니다.
public class CarDto {
private final String type = "car";
private final String name;
private final int position;
public CarDto(final String name, final int position) {
this.name = name;
this.position = position;
}
}
만약 자동차 이름처럼 코드 내부에서 변경이 없다면, final로 지정해두면 바뀔 위험이 없어지므로 사용하면 좋습니다.
메서드의 인자에도 final을 쓰게 되면 해당 메서드의 길이가 길어지더라도, 불변성을 보장받을 수 있어서 안전한 개발이 가능해집니다😁
상수를 구현할 때는 static과 final을 이용해서 불변하는 필드로 사용합니다. static은 메모리에 한번만 할당되기 때문에 메모리를 절약해서, 상수를 사용할 때 final과 같이 쓴다면 효율성이 높아집니다.