We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라.
//좋은 예. 인터페이스를 타입으로 사용했다. Set<Son> sonSet = new LinkedHashSet<>(); //나쁜 예. 클래스를 타입으로 사용했다! LinkedHashSet<Son> sonSet = new LinkedHashSet<>();
// 나중에 원한다면 다음과 같이 구현 클래스만 교체할 수 있다. Set<Son> sonSet = new HashSet<>();
LinkedHashSet
HashSet
LinkedHashMap
String, BigInteger 같은 값 클래스
String
BigInteger
OutputStream
java.io
PriorityQueue
Queue
comparator
The text was updated successfully, but these errors were encountered:
co323co
No branches or pull requests
📚 [ Item 64 ] 객체는 인터페이스를 사용해 참조하라
예시
주의할 점
LinkedHashSet
이 따르는 순서 정책을 가정하고 동작하는 상황에서HashSet
으로 바꾸면 문제가 될 수 있다.구현타입을 바꾸는 동기
LinkedHashMap
을 사용하면, 키 타입도 상관 없으면서 성능은 비슷하게 유지하면서 순회 순서를 예측할 수 있다.적합한 인터페이스가 없는 경우
값 클래스인 경우
클래스 기반으로 작성된 프레임워크가 제공하는 객체들
OutputStream
등java.io
패키지의 여러 클래스들인터페이스에는 없는 특별한 메서드를 제공하는 클래스들
PriorityQueue
클래스는Queue
인터페이스에는 없는comparator
메서드를 제공한다💡 팁
The text was updated successfully, but these errors were encountered: