Java에서 final은 다음에 사용됩니다:
특징 및 세부사항:
final 변수는 선언 시 또는 생성자에서 초기화되어야 함;final 참조는 참조를 변경할 수 없지만, 참조하는 객체는 변경할 수 있음 (immutable이 아닐 경우);final 클래스(예: String, Math) 상속은 불가능함;final 메서드는 자식 클래스에서 재정의할 수 없음.final class A {} // class B extends A는 불가능함 class Parent { final void foo() { } } class Child extends Parent { // void foo() {} // 오류: foo를 반환할 수 없음 } final int COUNT = 10;
final 변수가 참조하는 객체의 상태를 변경할 수 있습니까?
답변: 네, immutable 객체가 아닐 경우 가능합니다. 예:
final List<String> names = new ArrayList<>(); names.add("Vasya"); // 허용됨 — 참조에 있는 객체는 변경 가능하지만 참조 자체는 변경할 수 없음 names = new ArrayList<>(); // 컴파일 오류
이야기
이야기
이야기
final 클래스에 기반한 외부 API를 확장해야 하는 문제가 발생했습니다. 이 때문에 확장이 불가능했고, 로직을 중복시켜 두 개의 독립적인 제품 브랜치를 유지해야 했고, 이는 마이그레이션을 복잡하게 만들었습니다.