Jwhy's Blogitory
close
프로필 배경
프로필 로고

Jwhy's Blogitory

  • 분류 전체보기 (107)
    • Book Study (48)
      • [Java] 이펙티브 자바 (19)
      • [Kotlin] 코틀린 코루틴 (6)
      • [Kotlin] 코틀린 인 액션 (4)
      • [Kotlin] 객체에서 함수로 (4)
      • [Web] 웹을 지탱하는 기술 (9)
      • [Web] HTTP2 IN ACTION (5)
      • [Spring] 토비의 스프링 3.1 (0)
      • [Theory] 출.스.마 (1)
    • Devlog (4)
      • Kotlin (1)
      • Project (0)
      • Java (0)
      • Git (3)
    • Kotlin (13)
      • 이론 (1)
      • 기능 정리 (1)
      • [Inflearn] 코틀린 입문 (11)
    • Spring (25)
      • 이론 (1)
      • 프로젝트 (1)
      • 트러블 슈팅 (11)
      • 기능 정리 (11)
      • 리뷰 (1)
    • Java (2)
      • 이론 (2)
    • PS (13)
      • 그래프 (2)
      • 이론 (1)
      • 정렬 (2)
      • 컬렉션 (0)
      • 백트래킹 (6)
      • DFS (1)
      • DP (1)
    • DevOps (2)
      • AWS (2)
  • 홈
  • 태그
  • 방명록

[Item32] - 제네릭과 가변인수를 함께 쓸 때는 신중하라.

Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 가변인수와 제네릭 가변인수(varargs) 메소드와 제네릭은 JDK 5에서 함께 추가되었으니 잘 어우러지리라 기대하겠지만, 그렇지 않다. 가변인수는 메소드에 넘기는 인수의 개수를 클라이언트가 조절할 수 있게 해준다. public class VarargsTest { @Test void argsTest() { printArgs(1, 2, 3, 4, 5); } public void printArgs(int... args) { for (int arg : args) { System.out.printf("%d ", arg); } } } 가변인수 메소드를 호출하면 해당 인수들을 ..

  • format_list_bulleted Book Study/[Java] 이펙티브 자바
  • · 2023. 12. 27.
  • textsms

[Item31] - 한정적 와일드카드를 사용해 API 유연성을 높이라.

Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 상위 타입과 하위 타입의 호환 매개변수화 타입은 불공변(invariant)이다. 서로 다른 Type1, Type2가 있다고 가정해보자. List은 List의 하위 타입도, 상위 타입도 아니다. 이 말은 즉, List은 List의 하위 타입이 아니라는 뜻과 동일한 것이다. public class ListTest { @Test void listTest() { List objList = new ArrayList(); List strList = new ArrayList(); objList.add(strList); } } 위 코드를 보면 objList는 어떤 객체든 넣을 수 ..

  • format_list_bulleted Book Study/[Java] 이펙티브 자바
  • · 2023. 12. 27.
  • textsms

[Item28] - 배열보다는 리스트를 사용하라.

Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 타입 차이 배열과 제네릭 타입에는 중요한 차이가 두 가지 있다. 공변과 불공변 실체화(reify) 공변과 불공변 배열은 공변;함께 변한다(covariant)이다. Sub가 Super의 하위 타입이라면, Sub[]는 Super[]의 하위 타입이 된다. Long은 Object의 하위에 속해있기 때문에 Object[]와 Long[]은 함께 사용이 가능하다. @Test void objArrTest() { Object[] objectArr = new Long[1]; // 런타임 에러 발생 : java.lang.ArrayStoreException: java.lang.String..

  • format_list_bulleted Book Study/[Java] 이펙티브 자바
  • · 2023. 12. 15.
  • textsms

[Item26] - 로 타입은 사용하지 말라.

Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 제네릭 제네릭(generic)은 자바 5부터 사용할 수 있으며, 안정적인 형변환을 할 수 있도록 지원하는 타입이다. 제네릭은 클래스 혹은 인터페이스에 타입 매개변수를 통해 붙여 사용할 수 있다. public class ArrayList {...} public interface List {...} 이러한 형태를 제네릭 클래스 혹은 제네릭 인터페이스라고 부르며, 이를 통 틀어서 제네릭 타입이라고도 부른다. 매개변수화 타입 각각의 제네릭 타입은 일련의 매개변수화 타입(Parameterized type)을 정의한다. public class ArrayList {...} 위 코..

  • format_list_bulleted Book Study/[Java] 이펙티브 자바
  • · 2023. 12. 15.
  • textsms

[Item23] - 태그 달린 클래스보다는 클래스 계층구조를 활용하라.

Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 태그 클래스 태그 달린 클래스란, 현재 상태에 대한 필드가 존재하는 클래스를 의미한다. 아래 클래스에 대한 코드를 확인해보면 shape라는 변수가 현재 Figure가 RECTANGLE인지 CIRCLE인지에 대한 상태를 반환하므로, 태그로 볼 수 있다. public class Figure { enum Shape {RECTANGLE, CIRCLE}; final Shape shape; // 사각형(RECTANGLE)일 경우 사용 double length, width; // 원(CIRCLE)일 경우 사용 double radius; public Figure(double rad..

  • format_list_bulleted Book Study/[Java] 이펙티브 자바
  • · 2023. 10. 29.
  • textsms

[Item22] - 인터페이스는 타입을 정의하는 용도로만 사용하라.

Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에 얘기해주는 것이다. 상수 인터페이스 상수 인터페이스란, 상수를 뜻하는 static final 필드로 가득찬 인터페이스를 의미한다. 이 상수들을 사용하려는 클래스에서는 정규화된 이름을 쓰는걸 피하고자 그 인터페이스를 구현하곤 한다. public interface PhysicalConstants { // 아보가드로 수 (1/몰) static final double AVOGADROS_NUMBER = ...; // 볼츠만 상수 (J/K) static final double BOL..

  • format_list_bulleted Book Study/[Java] 이펙티브 자바
  • · 2023. 10. 23.
  • textsms
  • navigate_before
  • 1
  • ···
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (107)
    • Book Study (48)
      • [Java] 이펙티브 자바 (19)
      • [Kotlin] 코틀린 코루틴 (6)
      • [Kotlin] 코틀린 인 액션 (4)
      • [Kotlin] 객체에서 함수로 (4)
      • [Web] 웹을 지탱하는 기술 (9)
      • [Web] HTTP2 IN ACTION (5)
      • [Spring] 토비의 스프링 3.1 (0)
      • [Theory] 출.스.마 (1)
    • Devlog (4)
      • Kotlin (1)
      • Project (0)
      • Java (0)
      • Git (3)
    • Kotlin (13)
      • 이론 (1)
      • 기능 정리 (1)
      • [Inflearn] 코틀린 입문 (11)
    • Spring (25)
      • 이론 (1)
      • 프로젝트 (1)
      • 트러블 슈팅 (11)
      • 기능 정리 (11)
      • 리뷰 (1)
    • Java (2)
      • 이론 (2)
    • PS (13)
      • 그래프 (2)
      • 이론 (1)
      • 정렬 (2)
      • 컬렉션 (0)
      • 백트래킹 (6)
      • DFS (1)
      • DP (1)
    • DevOps (2)
      • AWS (2)
최근 글
인기 글
최근 댓글
태그
  • #백준
  • #kotlin
  • #java
  • #제네릭
  • #이펙티브 자바
  • #자바
  • #코루틴
  • #코틀린
  • #백트래킹
  • #이펙티브자바
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바