아이템 42. 익명클래스 보다 람다를 사용하라.
이펙티브 자바 아이템 42. 익명클래스 보다 람다를 사용하라. jdk 1.1부터 익명클래스를 사용했는데 jdk1.8에서 람다식을 적용하면서 코드를 더 짧게 가지고 갈수 있게 되었다. 자질구래한 코드들은 사라지고 어떻게 동작하는지에 초점을 맞추게 될수 있는 코드가 되었다. 자바에서 함수타입을 표현할때 추상메서드 하나만 담은
Writing
기술 자체보다 어떤 문제를 왜 그렇게 풀었는지에 초점을 둡니다.
이펙티브 자바 아이템 42. 익명클래스 보다 람다를 사용하라. jdk 1.1부터 익명클래스를 사용했는데 jdk1.8에서 람다식을 적용하면서 코드를 더 짧게 가지고 갈수 있게 되었다. 자질구래한 코드들은 사라지고 어떻게 동작하는지에 초점을 맞추게 될수 있는 코드가 되었다. 자바에서 함수타입을 표현할때 추상메서드 하나만 담은
이펙티브 자바 아이템 41. 정의하려는 것이 타입(ElementType.TYPE)이라면 마커 인터페이스를 사용하라. 아무 구현이 없고 단지 자기를 구현하는 클래스가 특성 속성을 가짐을 표시해주는것 인터페이스를 마커인터페이스라고 한다. 대표적인 예가 Serializable이다 그럼 코드를 보면 마커인터페이스는 두가지 측면에
IDE 별 프로퍼티 인코딩에 따른 설정 이클립스와 인텔리제이의 인코딩에 따른 주석 코드에 변화가 있다. 아래를 보면 처음엔 이클립스에서 작성한 프로퍼티를 보면 그 다음엔 인텔리제이로 수정을 하면 위에 설정을 체크 하고 보면 수정됨 그렇게 되면 기존 과 코드가 틀리다 \uc811에서 \uC811 이런식으로 대문자로 바꿘다
이펙티브 자바 아이템 40. @Override 에너테이션을 일관성 있게 사용하라. @Override를 달면 재정의를 잘못하는 경우를 알려준다 아래의 예를 보자. 실행결과 위에 코드에서 버그를 찾아 보자 위에서는 equals를 재정의 하려고 한것 처럼 보인다 그래서 일반규약인 hashCode도 재정의 했다. 그런데 위에는
데이터 베이스 코드 테이블의 값을 Enum 으로 바꾸기 일단 데이터 베이스에서 공통을 정의 하고 많이 쓰실텐데 코드에서 들어 오는 값이랑 DB 값이랑 불일치 하는 경우가 있다. java 1.5 이전 버전에는 아래 처럼 선언 하고 썼다. 위에 코드에 선택을 하려고 swich 문까지 써서 실행결과 위에 코드를 enum으로 바
이펙티브 자바 아이템 39. 명명 패턴보다는 애너테이션을 사용하라 junit3 버전과 junit4 버전에 차이점을 보면 테스트 메소드가 무조건 test라는 단어로 시작이 되어야 되었는데 junit4버전은 @Test 어너테이션으로 대체 되었다. 명명 패턴에 문제점 1. 오타가 나면 안된다. 1. 올바른 프로그램 요소만 사용
JDK ArrayList는 왜 List를 implement를 하고 있나요? Arrays 클래스 위에서 보면 ArrayList는 List를 implements하지 않고 아래의 ArrayList는 하고 있다. AbstractList가 이미 그 구현을 선언했다면 List 인터페이스의 구현을 다시 선언 할 필요가 없습니다. 이
코딜러티 문제(binary gap) 코딜러티 문제를 풀어 봤는데요 전 자바 버전으로 풀었습니다. 스텍오버플로우에서 다른사람 풀이도 보니 다르게 푸는것을 보는 재미가 있었습니다. 1과 1사이의 인덱스를 가지고 푼 예가 없어서 스텍오버플로에 답변으로 남겼습니다. 참조
Annotation Annotation(메타 데이터의 한 형태)은 프로그램 자체에 포함되지 않은 프로그램에 대한 데이터를 제공합니다. Annotation은 Annotation이 달린 코드의 작동에 직접적인 영향을 미치지 않습니다. Annotations에는 다음과 같은 여러 가지 용도가 있습니다. Information fo
이펙티브 자바 아이템 38. 확장할수있는 열거 타입이 필요하면 인터페이스를 사용하라. 위에 처럼 인터페이스를 사용하여 Operation을 확장할수 있다. 다시 2개의 오퍼레이션을 확장 시키면 이렇게 확장을 하면 기존 연산에 쓰던 곳에서 계속 확장된것도 사용할수 있다. 테스트 코드를 다시 작성해서 돌려보면 실행결과 위에 코