본문 바로가기

Dev Log/Java7

Modern Java In Action 정리 - 9장 리팩터링, 테스팅, 디버깅 코드 가독성 내가 쓴 코드를 다른 사람이 쉽게 이해하고 유지보수할 수 있게 만드는 것. 9장에서는 아래의 방법으로 기존의 코드를 리팩터링하고 있다. 익명클래스 -> 람다표현식 람다표현식 -> 메서드 참조 명령형 데이터 처리 -> 스트림 익명클래스를 람다 표현식으로 리팩터링하기 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("Hello"); } }; Runnable runnable2 = () -> System.out.println("Hello"); 익명 클래스를 람다로 바꿀 때 주의할 점이 세가지 있다. 1. this라는 키워드가 쓰이고 있다면, 익명 클래스 내에서의 this는 익명 클래스 내에서의 .. 2020. 6. 13.
Modern Java In Action 정리 - 8장 컬렉션 API 개선 Collection 팩토리 메소드 가변 리스트 만들기 List friends1 = new ArrayList(); friends1.add("Raphael"); friends1.add("Olivia"); friends1.add("Thibaut"); 고정 크기의 리스트 만들기 List friends2 = Arrays.asList("Raphael", "Olivia"); // fixed size friends2.set(0, "Richard"); // friends.add("Thibaut"); // throws UnsupportedOperationException 한 발짝 더 나아가 불변 리스트 만들기 (Java 9 부터 지원) List friends3 = List.of("Raphael", "Olivia", "Th.. 2020. 6. 6.
[Java] Interface vs Abstract class interface 오직 추상 method와 상수만을 멤버로 갖는다. (JDK 1.8부터는 static method와 default method도 가능) static method: 선택적으로 override할 수 있고, 객체에서도 호출되고 static으로도 호출 가능 default method: 선택적으로 override할 수 있음. 다중 구현 가능 abstract class 상속은 하나만 가능 추상 method를 가진 클래스 공통점 new 연산자로 인스턴스 생성 불가능 prototype만 있는 method를 갖는다. 사용하기 위해서는 확장/구현 해야 한다. 차이점 MINOR) abstract class는 완성된 method를 사용할 수 있지만, interface는 추상 method와 static, def.. 2019. 5. 7.