SlideShare a Scribd company logo
1 of 37
5강 코드효율성
JavaCafe
김흥래
목차
• 제네릭 (Generic)
• 열거형 (Enum)
• 주석 (Annotation)
DEMO
https://github.com/hrkim3468/javaSampleCode.git
• 제네릭 (Generic)
• 열거형 (Enum)
• 주석 (Annotation)
제네릭 (Generics)
• 1.5 배포판에서 추가
• 타입캐스팅 (TypeCasting)에 의한 RuntimeException 방
지 목적
• 컴파일 레벨에서 타입캐스팅 오류를 감지
• 좀더 안전한 프로그램 개발이 가능
• 코드의 복잡성이 증가
무조건 Generic을 사용하도록
강제하지 않은 이유는?
List 타입과 List<Object> 타입의
차이점은?
Wildcard Generic Type
• 언제 사용할까?
– 제네릭 타입을 사용하고 싶지만 실 타입 매개변수를 모를 때
– 어떤 타입이든 괜찮을 때
• 사용법
– 실제 타입 대신 “?”를 사용한다.
Wildcard Generic Type
<?> // 모든 타입 허용
<? super 특정클래스> // 특정클래스의 상위 클래스만 허용
<? extends 특정클래스> // 특정클래스의 하위 클래스만 허용
public List<? extends Map> method();
리턴 가능한 타입은?
타입 매개변수
• JDK에서 적용된 Collection을 Generic으로 사용하는 것
은 쉽지만 직접 만들어야 할 경우 상대적으로 어렵다.
• 코드상에 존재하는 모든 Object를 타입 매개변수로 변환
해야 한다.
타입 매개변수
• 상황에 따라 논리적으로 타입 매개변수를 제공하고 있다.
• 컴파일에 제한은 없으나 관례상 제공되는 타입 매개변수
를 사용하는 것을 권장
E – Element
K – Key
N – Number
T – Type
V – Value
• 제네릭 (Generic)
• 열거형 (Enum)
• 주석 (Annotation)
Enum 타입
• Java 1.5 버전에서 열거형(Enumerated Type)이라는 특수
한 형태의 클래스가 추가되었다.
• 프로그램 내부의 상수값을 정의하는 코드를 대체하는 용
도로 사용되는 타입이다.
Enum 타입
• 일종의 Class이므로 맴버변수, 상수, 메소드를 가질 수 있
다.
• Object 객체를 상속하고 있다.
• Enum은 불변객체이다.
• 제네릭 (Generic)
• 열거형 (Enum)
• 주석 (Annotation)
Naming Pattern
• 과거에는 특별한 처리를 위해 정보가 필요할 경우 메소
드명이나 클래스명의 Full-Name이나 Prefix 등의 문자열
을 약속하여 사용하였다.
과거 Junit은 테스트 케이스를 작성할 때
메소드명이 반드시 “test”로 시작해야 했다.
testUserService
testLoginService
Naming Pattern
• 코딩시 오타에 의해 생기는 문제
• 예약된 특정 Naming을 사용 못하는 문제
• 컴파일러 레벨에서 컴파일 오류를 알 수 없는 문제
Annotation
• Java 1.5에 Annotation이라는 Spec이 추가되었다.
• “주석”이라고 번역되지만 “메타데이터”라고 이해하는 것이 좋다.
– Annotation은 단순히 어떠한 설명을 넘어서 그 이상의 일을 할 수 있
다.
– Annotation에 구현된 정보에 따라 Business Logic에는 영향을 주지 않
고 다양한 처리를 하는 것이 가능하다.
• 가독성이 좋아지고 Business Logic과 무관한 복잡한 정보를 처
리하는 로직을 숨길 수 있다.
Built-in Annotation
• JDK에서 기본적으로 제공하는 Annotation이 존재한다.
@Override
@Deprecated
@SuppressWarings
@SafeVarargs
@FunctionalInterface
Meta Annotation
• Custom Annotation을 개발하기 위한 Annotation이 존
재한다.
@Retention : 동작범위
@Decumented : JavaDoc 문서화 여부
@Target : 적용되는 속성 범위
@Inherited : 상속여부
@Repeatable : 반복적인 선언 (Array)
Custom Annotation
QnA

More Related Content

What's hot

Clean code short review
Clean code short reviewClean code short review
Clean code short reviewJong Su Park
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기SanghoYun
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들Lee Geonhee
 
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계Eb Styles
 
Gerrit code review guideline @ squarelab
Gerrit code review guideline @ squarelabGerrit code review guideline @ squarelab
Gerrit code review guideline @ squarelabJaewon Baek
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법Jay Park
 
[Pl in c++] 11. chapter
[Pl in c++] 11. chapter[Pl in c++] 11. chapter
[Pl in c++] 11. chapterMinGeun Park
 
Concurreny programming
Concurreny programmingConcurreny programming
Concurreny programmingJaejin Yun
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101정주 김
 
이상한모임 720 - 내 코드를 믿지 마라
이상한모임 720 - 내 코드를 믿지 마라이상한모임 720 - 내 코드를 믿지 마라
이상한모임 720 - 내 코드를 믿지 마라Pluu love
 
소스리딩워크샵 - NHN NEXT
소스리딩워크샵 - NHN NEXT소스리딩워크샵 - NHN NEXT
소스리딩워크샵 - NHN NEXTMinsuk Lee
 
Angualr2에서 typescript 활용하기
Angualr2에서 typescript 활용하기Angualr2에서 typescript 활용하기
Angualr2에서 typescript 활용하기현섭 최
 

What's hot (12)

Clean code short review
Clean code short reviewClean code short review
Clean code short review
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계
 
Gerrit code review guideline @ squarelab
Gerrit code review guideline @ squarelabGerrit code review guideline @ squarelab
Gerrit code review guideline @ squarelab
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법
 
[Pl in c++] 11. chapter
[Pl in c++] 11. chapter[Pl in c++] 11. chapter
[Pl in c++] 11. chapter
 
Concurreny programming
Concurreny programmingConcurreny programming
Concurreny programming
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
 
이상한모임 720 - 내 코드를 믿지 마라
이상한모임 720 - 내 코드를 믿지 마라이상한모임 720 - 내 코드를 믿지 마라
이상한모임 720 - 내 코드를 믿지 마라
 
소스리딩워크샵 - NHN NEXT
소스리딩워크샵 - NHN NEXT소스리딩워크샵 - NHN NEXT
소스리딩워크샵 - NHN NEXT
 
Angualr2에서 typescript 활용하기
Angualr2에서 typescript 활용하기Angualr2에서 typescript 활용하기
Angualr2에서 typescript 활용하기
 

Similar to 5강 코드효율성

Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...asfasf4
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)SangIn Choung
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 aChoonghyun Yang
 
TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기Wonchang Song
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)용호 최
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본용호 최
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework경주 전
 
Effective c++ chapter 7,8
Effective c++ chapter 7,8Effective c++ chapter 7,8
Effective c++ chapter 7,8문익 장
 
[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿해강
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 pptInjae Lee
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basicsJaewon Choi
 
Swift세미나(속성(properties), 메소드(method))
Swift세미나(속성(properties), 메소드(method))Swift세미나(속성(properties), 메소드(method))
Swift세미나(속성(properties), 메소드(method))경원 정
 
10장 클래스
10장 클래스10장 클래스
10장 클래스kidoki
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 

Similar to 5강 코드효율성 (20)

Annotation
AnnotationAnnotation
Annotation
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a
 
TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기
 
Java_05 class
Java_05 classJava_05 class
Java_05 class
 
Java class
Java classJava class
Java class
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
 
Effective c++ chapter 7,8
Effective c++ chapter 7,8Effective c++ chapter 7,8
Effective c++ chapter 7,8
 
[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿[아꿈사] The C++ Programming Language 13장 템플릿
[아꿈사] The C++ Programming Language 13장 템플릿
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 ppt
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basics
 
Swift세미나(속성(properties), 메소드(method))
Swift세미나(속성(properties), 메소드(method))Swift세미나(속성(properties), 메소드(method))
Swift세미나(속성(properties), 메소드(method))
 
10장 클래스
10장 클래스10장 클래스
10장 클래스
 
Tdd
TddTdd
Tdd
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 

More from 흥래 김

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기흥래 김
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유흥래 김
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기흥래 김
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기흥래 김
 
한글 자모 분석 원리
한글 자모 분석 원리한글 자모 분석 원리
한글 자모 분석 원리흥래 김
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기흥래 김
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2흥래 김
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1흥래 김
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression흥래 김
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8흥래 김
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa흥래 김
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
Apache http component
Apache http componentApache http component
Apache http component흥래 김
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포흥래 김
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화흥래 김
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략흥래 김
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava흥래 김
 

More from 흥래 김 (20)

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기
 
한글 자모 분석 원리
한글 자모 분석 원리한글 자모 분석 원리
한글 자모 분석 원리
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1
 
3. stream api
3. stream api3. stream api
3. stream api
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
Apache http component
Apache http componentApache http component
Apache http component
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava
 

5강 코드효율성

  • 2. 목차 • 제네릭 (Generic) • 열거형 (Enum) • 주석 (Annotation)
  • 4. • 제네릭 (Generic) • 열거형 (Enum) • 주석 (Annotation)
  • 5. 제네릭 (Generics) • 1.5 배포판에서 추가 • 타입캐스팅 (TypeCasting)에 의한 RuntimeException 방 지 목적 • 컴파일 레벨에서 타입캐스팅 오류를 감지 • 좀더 안전한 프로그램 개발이 가능 • 코드의 복잡성이 증가
  • 6.
  • 8. List 타입과 List<Object> 타입의 차이점은?
  • 9.
  • 10. Wildcard Generic Type • 언제 사용할까? – 제네릭 타입을 사용하고 싶지만 실 타입 매개변수를 모를 때 – 어떤 타입이든 괜찮을 때 • 사용법 – 실제 타입 대신 “?”를 사용한다.
  • 11.
  • 12. Wildcard Generic Type <?> // 모든 타입 허용 <? super 특정클래스> // 특정클래스의 상위 클래스만 허용 <? extends 특정클래스> // 특정클래스의 하위 클래스만 허용 public List<? extends Map> method(); 리턴 가능한 타입은?
  • 13. 타입 매개변수 • JDK에서 적용된 Collection을 Generic으로 사용하는 것 은 쉽지만 직접 만들어야 할 경우 상대적으로 어렵다. • 코드상에 존재하는 모든 Object를 타입 매개변수로 변환 해야 한다.
  • 14.
  • 15. 타입 매개변수 • 상황에 따라 논리적으로 타입 매개변수를 제공하고 있다. • 컴파일에 제한은 없으나 관례상 제공되는 타입 매개변수 를 사용하는 것을 권장 E – Element K – Key N – Number T – Type V – Value
  • 16.
  • 17.
  • 18.
  • 19. • 제네릭 (Generic) • 열거형 (Enum) • 주석 (Annotation)
  • 20. Enum 타입 • Java 1.5 버전에서 열거형(Enumerated Type)이라는 특수 한 형태의 클래스가 추가되었다. • 프로그램 내부의 상수값을 정의하는 코드를 대체하는 용 도로 사용되는 타입이다.
  • 21.
  • 22. Enum 타입 • 일종의 Class이므로 맴버변수, 상수, 메소드를 가질 수 있 다. • Object 객체를 상속하고 있다. • Enum은 불변객체이다.
  • 23.
  • 24.
  • 25.
  • 26. • 제네릭 (Generic) • 열거형 (Enum) • 주석 (Annotation)
  • 27. Naming Pattern • 과거에는 특별한 처리를 위해 정보가 필요할 경우 메소 드명이나 클래스명의 Full-Name이나 Prefix 등의 문자열 을 약속하여 사용하였다. 과거 Junit은 테스트 케이스를 작성할 때 메소드명이 반드시 “test”로 시작해야 했다. testUserService testLoginService
  • 28. Naming Pattern • 코딩시 오타에 의해 생기는 문제 • 예약된 특정 Naming을 사용 못하는 문제 • 컴파일러 레벨에서 컴파일 오류를 알 수 없는 문제
  • 29. Annotation • Java 1.5에 Annotation이라는 Spec이 추가되었다. • “주석”이라고 번역되지만 “메타데이터”라고 이해하는 것이 좋다. – Annotation은 단순히 어떠한 설명을 넘어서 그 이상의 일을 할 수 있 다. – Annotation에 구현된 정보에 따라 Business Logic에는 영향을 주지 않 고 다양한 처리를 하는 것이 가능하다. • 가독성이 좋아지고 Business Logic과 무관한 복잡한 정보를 처 리하는 로직을 숨길 수 있다.
  • 30. Built-in Annotation • JDK에서 기본적으로 제공하는 Annotation이 존재한다. @Override @Deprecated @SuppressWarings @SafeVarargs @FunctionalInterface
  • 31. Meta Annotation • Custom Annotation을 개발하기 위한 Annotation이 존 재한다. @Retention : 동작범위 @Decumented : JavaDoc 문서화 여부 @Target : 적용되는 속성 범위 @Inherited : 상속여부 @Repeatable : 반복적인 선언 (Array)
  • 32.
  • 34.
  • 35.
  • 36.
  • 37. QnA

Editor's Notes

  1. 하위호환성을 위해 과거에 사용하던 Raw 타입의 선언이 가능
  2. List 타입은 제네릭이 생략 List<Object> 타입은 모든 객체를 허용한다는 의미