본문 바로가기
반응형

자바61

자바의 변성 - 공변/무공변/반공변, 사용지점 변성과 선언 지점 변성 목차 · 변성 · 제네릭과 공변/무공변 · 와일드카드 타입과 공변/반공변 · 사용지점 변성과 선언 지점 변성 변성 변성(Variance)은 타입의 계층 관계에서 서로 다른 타입 간에 어떤 관계가 있는지 나타내는 개념이다. 해당 개념은 자바의 제네릭을 설명하기 위해 자주 사용된다. 변성에는 네 가지 종류가 있다. 공변(covariant), 반공변(contravariant), 이변량(bivariant), 무공변(or 불공변, invariant) 이 중에서 알아볼 것은 공변, 반공변, 무공변이다. 제네릭과 공변/무공변 공변은 사전적 의미로 '함께 변하는'이라는 뜻이다. 제네릭은 기본적으로 무공변(or 불공변, invariant)이다. 즉, 서로 다른 타입 Type1과 Type2가 있을 때, List은 List.. 2022. 2. 8.
[Effective Java] 이펙티브자바 정리: 7장 람다와 스트림 목차 · 아이템 42. 익명 클래스보다는 람다를 사용하라 · 아이템 43. 람다보다는 메서드 참조를 사용하라 · 아이템 44. 표준 함수형 인터페이스를 사용하라 · 아이템 45. 스트림은 주의해서 사용하라 · 아이템 46. 스트림에서는 부작용 없는 함수를 사용하라 · 아이템 47. 반환 타입으로는 스트림보다 컬렉션이 낫다 · 아이템 48. 스트림 병렬화는 주의해서 적용하라 · 자바 8에서 함수형 인터페이스, 람다, 메서드 참조 개념이 추가되면서 함수 객체를 더 쉽게 만들 수 있게 되었다. · 이와 함께 스트림 API가 추가되어 데이터 원소의 시퀸스 처리를 라이러리 차원에서 지원하기 시작했다. · 위 기능들을 효과적으로 사용하는 방법을 알아보자. 아이템 42. 익명 클래스보다는 람다를 사용하라 핵심 정리 .. 2022. 2. 7.
[Effective Java] 이펙티브자바 정리: 5장 제네릭 목차 · 아이템 26. 로 타입은 사용하지 말라 · 아이템 27. 비검사 경고를 제거하라 · 아이템 28. 배열보다는 리스트를 사용하라 · 아이템 29. 이왕이면 제네릭 타입으로 만들라 · 아이템 30. 이왕이면 제네릭 메서드로 만들라 · 아이템 31. 한정적 와일드카드를 사용해 API 유연성을 높이라 · 아이템 32. 제네릭과 가변인수를 함께 쓸 때는 신중하라 · 아이템 33. 타입 안전 이종 컨테이너를 고려하라 · 옮긴이의 말 아이템 26. 로 타입은 사용하지 말라 핵심 정리 · 로 타입을 사용하면 런타임에 예외가 날 수 있으니 사용하면 안 된다. - 로 타입은 제네릭이 도입되기 이전 코드와의 호환성을 위해 제공될 뿐이다. · Set는 어떠 타입의 객체도 저장할 수 있는 매개변수화 타입이고, Set는.. 2022. 2. 6.
[Effective Java] 이펙티브자바 정리: 4장 클래스와 인터페이스 목차 · 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 · 아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 · 아이템 17. 변경 가능성을 최소화하라 · 아이템 18. 상속보다는 컴포지션을 사용하라 · 아이템 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라 · 아이템 20. 추상 클래스보다는 인터페이스를 우선하라 · 아이템 21. 인터페이스는 구현하는 쪽을 생각해 설계하라 · 아이템 22. 인터페이스는 타입을 정의하는 용도로만 사용하라 · 아이템 23. 태그 달린 클래스보다는 클래스 계층구조를 활용하라 · 아이템 24. 멤버 클래스는 되도록 static으로 만들라 · 아이템 25. 톱레벨 클래스는 한 파일에 하나만 담으라 · 클래.. 2022. 1. 27.
[Effective Java] 이펙티브자바 정리: 3장 모든 객체의 공통 메서드 목차 · 아이템 10. equals는 일반 규약을 지켜 재정의하라 · 아이템 11. equals를 재정의하려거든 hashCode도 재정의하라 · 아이템 12. toString을 항상 재정의하라 · 아이템 13. clone 재정의는 주의해서 진행하라 · 아이템 14. Comparable을 구현할지 고려하라 · Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로 상속해서 사용하도록 설계되었다. · Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의(overriding)를 염두에 두고 설계된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다. - 메서드를 잘못 구현하면 대상 클래스가 이 규약을 준수한다.. 2022. 1. 25.
[Effective Java] 이펙티브자바 정리: 2장 객체 생성과 파괴 목차 · 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 · 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 · 아이템 3. private 생성자나 열거 타입으로 싱글턴을 보증하라 · 아이템 4. 인스턴스를 막으려거든 private 생성자를 사용하라 · 아이템 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 · 아이템 6. 불필요한 객체 생성을 피하라 · 아이템 7. 다 쓴 객체 참조를 해제하라 · 아이템 8. finalizer와 cleaner 사용을 피하라 · 아이템 9. try-finally보다는 try-with-resource를 사용하라 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 · 클래스의 인스턴스를 얻기 위해 정적 팩터리 메서드(static factory m.. 2022. 1. 24.
반응형