아이템 31. 한정적 와일드카드를 사용해 API의 유연성을 높혀라.
이펙티브 자바 아이템 31. 한정적 와일드카드를 사용해 API의 유연성을 높혀라. 컴파일에러 위와 같은 에러가 난다. 보기에는 당연히 되어야 할것 같은데 에러가 난다. 제네릭은 불공변이기 때문이다. 실행결과 위에 처럼 자바에서는 이런상황을 대처하기 위해 와일드 카트 타입을 지원한다. 유연성을 극대화 하기위해서는 생산자나
Writing
기술 자체보다 어떤 문제를 왜 그렇게 풀었는지에 초점을 둡니다.
이펙티브 자바 아이템 31. 한정적 와일드카드를 사용해 API의 유연성을 높혀라. 컴파일에러 위와 같은 에러가 난다. 보기에는 당연히 되어야 할것 같은데 에러가 난다. 제네릭은 불공변이기 때문이다. 실행결과 위에 처럼 자바에서는 이런상황을 대처하기 위해 와일드 카트 타입을 지원한다. 유연성을 극대화 하기위해서는 생산자나
이펙티브 자바 아이템 30. 이왕이면 제네릭 메서드로 만들어라 컴파일 메시지 위처럼 메시지가 나오는데 수정을 하면 메시지는 없고 정상적으로 나온다. 실행결과 실행결과 참조
자바 컴파일러 옵션추가 위에 옵션을 추가 해서 상세 로그를 보려고 할때 추가 시키는 위치 이다. 먼저 인텔리 제이에서 방법 먼저 상단 메뉴의 file을 클릭후애 setting으로 들어가면 아래의 메뉴에 존재 한다. 위에 보면 추가된 위치에 추가 시켜 주면 아래의 메시지 창에서 확인 할수 있다. 참조
이펙티브 자바 아이템 29. 이왕이면 제네릭타입으로 만들어라 에서 만들었던 Stack 클래스를 제네릭타입으로 변환하는것이다. 위와 같은 코드가 있는데 배열을 제거 하는 방법이 2가지 있다. 아래는 첫번째 방법으로 elements의 타입을 E로 변환시켜서 하지만 new E[] 배열이 생성되지 않는다 그래서 Object[]을
레디스 접속용 클라이언트 레디스 접속용 클라이언트가 몇개 없는데 그중에 RedisDesktopManager가 제일 편한거 같은데 언제부터인지 클러스터 모드로 셋팅된 레디스에 접속시에 데이터가 모든 node에 있는것 처럼보이고 데이터도 잘보이지 않는다. 버전 별로 테스트 해보니 버전이 제일 맘에 들어서 사용중이다. 위 버전
이펙티브 자바 아이템 28. 배열보단 리스트를 사용하라 배열은 A가 B의 하위 타입이면 A[]이 B[]의 하위타입이다. 하지만 제네릭은 List< A 가 List< B 의 하위타입은 아니다 그래서 불변이다. 어떻게 보면 제네릭이 문제가 있는것 처럼 보이지만 문제는 배열이다. 실행결과 위에 코드는 컴파일시에는 문제가 없지만
이펙티브 자바 아이템 27. 비검사 경고를 제거하라 제네릭을 사용하면 비검사경고가 많이 보일것이다 가능한 비검사 에러를 제거 하자. 컴파일 명령줄 인수에 Xlint:unchecked를 추가하면 자세한 코멘트가 보인다. 만약 타입 안정성이 확보 되었다고 판단되면 @SuppressWarnings("unchecked") 사용하
javac Xlint options xlint 옵션에 대한 설명 실행은 Xlint:name 으로 하고 name은 아래의 이름중 하나 입니다. cast : 불필요한 cast에 대해서 경고를 나타냅니다. classfile : 클래스 파일에 대한 문제에 대해 나타냅니다. deprecation : deprecated 된것을 사용
코드리뷰(code review) 지금까지 소프트웨어 개발 회사를 다니면서 명시적으로나 암묵적으로나 코드리뷰를 했던 경험이 있습니다. 그런데 코드리뷰 후가 문제가 되는 경우가 있다. 사실 코드에서 에러가 나지는 않지만 명시적이지 않은 변수명 및 기능은 바꼈지만 이름이 바뀌지 않아서 (예를 들면 큐에 이름이 클릭뷰였는데 큐가