[Back-end]/[Java] 2

람다식과 외부 변수 참조

모던 Practical 자바 5장 스트림 API를 읽다 흥미로운 코드를 발견했다. (설명을 위해 약간 변형했습니다.) List intList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); int sum = 0; intList.stream().forEach(n -> sum+=n); System.out.println("sum : " + sum); 문제가 전혀 없어보이는 코드지만, 다음과 같은 메시지와 함께 컴파일 에러가 발생한다. java: local variables referenced from a lambda expression must be final or effectively final 해석하자면 '람다식에서 참조되는 변수는 final 이어야 한다.'이다. 진짜 흥미로..

[Back-end]/[Java] 2021.12.18

[Java] 인터페이스의 문제점과 발전 방향

자바를 공부해본 경험이 있는 사람이라면 객체지향 프로그래밍에서 인터페이스가 얼마나 큰 비중을 차지하는지 알고 계실 거라 생각합니다. 이번 포스팅에서는 객체지향의 핵심 개념인 인터페이스의 문제점과 이를 해결하기 위해 자바에서 제공하는 기능에 대해 이야기해보고자 합니다. 인터페이스의 문제점 인터페이스는 동일한 목적의 동작을 수행하도록 구격을 정의하는 명세서의 역할을 하며, 이를 구현한 클래스에서는 구격에 맞춰 세부적인 동작을 작성합니다. 좀더 구체적으로 표현하면, 자바는 다형성을 사용하여 코드의 유연성을 확보하기 위해 인터페이스에서는 추상 메서드를 선언하고 implements 하는 구현체에서는 override 하여 구격에 맞춰 코드를 작성합니다. 객체지향 개발을 가능하게 해주는 인터페이스는 장점도 많았지만 ..

[Back-end]/[Java] 2021.12.18