Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- livedata
- flutter firestore
- mfc
- RxAndroid
- Android
- 프로그래머스
- 안드로이드
- Python
- kodility
- C
- 안드로이드 구글맵
- Java
- RxJava
- NDK
- Kotlin
- C/C++
- 알고리즘
- Django REST Android
- android architecture component
- FLUTTER
- Django REST
- Django REST framework
- Flutter TextField
- Rxjava2
- android push
- C++
- dart
- 코틀린
- Android P
- UWP
Archives
- Today
- Total
개발하는 두더지
[Effective Java 규칙37] 자료형을 정의할 때 표식 인터페이스를 사용하라 본문
[Effective Java 규칙37] 자료형을 정의할 때 표식 인터페이스를 사용하라
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다.
표식 인터페이스 ( Marker Interface ) 는 아무 메서드도 선언하지 않는 인터페이스다. 클래스를 만들 때 표식 인터페이스를 구현한다는 것은, 해당 클래스가 어떤 속성을 만족한다는 것을 표시하는 것과 같다. 대표적인 예로 Serializable 인터페이스가 그 예다.
package java.io;
public interface Serializable {
}
Serializable 인터페이스를 구현하는 클래스는 해당 클래스로 만든 객체들은 직렬화할 수 있다는 뜻이다.
표식 어노테이션 ( Marker Annotation ) 과 비슷해보일 수 있지만 차이점이 있다. 표식 인터페이스는 자료형이고 표식 어노테이션은 자료형이 아니다. 예를들어, ObjectOutputStream.write(Object) 메서드는 인자가 Serializable 인터페이스를 이용하지 않으면 오류가 발생한다.
표식 인터페이스와 표식 어노테이션은 쓰임새가 다르다.
새로운 메서드가 없는 자료형을 정의하고자 한다면 표식 인터페이스를 이용해야하고, 클래스나 인터페이스 이외의 프로그램 요소에 표식을 달고, 앞으로 표식에 더 많은 정보를 추가할 가능성이 있다면 표식 어노테이션을 사용해야 한다.
이번 규칙은
자료형을 정의하려는 것이 아니라면 인터페이스는 사용하지 말라 라는 원칙의 역이다.
자료형이 필요하다면 인터페이스를 사용하라에 가깝다.
'Java,Android' 카테고리의 다른 글
[Effective Java 규칙40] 메서드 시그니처는 신중하게 설계하라 (0) | 2018.10.15 |
---|---|
[Effective Java 규칙39] 필요하다면 방어적 복사본을 만들라 (0) | 2018.10.15 |
[Effective Java 규칙33] ordinal을 배열 인덱스로 사용하는 대신 EnumMap을 이용하라 (0) | 2018.10.12 |
[Effective Java 규칙32] 비트 필드(bit field) 대신 EnumSet을 사용해라 (0) | 2018.10.12 |
[Effective Java 규칙31] enum ordinal 대신 객체 필드를 사용하라 (0) | 2018.10.12 |
Comments