본문 바로가기

IT321

이펙티브 자바 5장 - 제네릭 2 이왕이면 제네릭 메서드로 만들라 메서드 역시 제네릭으로 만들 수 있으며 클라이언트에서 입력 매개 변수와 반환값을 명시적으로 형변환해야하는 메서드보다 안전하며 사용하기도 쉽다. 재귀적 한정 타입 : 자기 자신이 들어간 표현식을 사용하여 타입 메개변수의 허용범위를 정하는 것 한정적 와일드 카드를 사용해 API 유연성을 높여라 유연성을 극대화하려면 원소의 생산자나 소비자용 입력 매개변수에 와일드카드 타입을 사용하게되면 API가 유연해진다. 와일드 카드 공식 펙스 (PECS) : 매개변수화 타입 T가 생산자라면 2019. 12. 5.
이펙티브 자바 5장 제네릭 : 컬렉션이 담을 수 있는 타입을 컴파일러에게 알려주기에 컴파일러가 스스로 형변환 코드를 추가할 수 있으며, 다른 타입의 객체를 넣으려는 시도를 차단하여 안전하고 명확한 프로그램을 만들 수 있다. 제네릭 타입 : 제네릭 클래스와 제네릭 인터페이스를 통틀어 부르는 말이며 클래스와 인터페이스 선언에 타입 매개 변수를 사용하면 이를 제네릭 클래스, 제네릭 인터페이스라 한다. 로타입은 사용하지 말라 로타입 : 제네릭 타입에서 매개변수를 전혀 사용하지 않는 것을 말한다. 로 타입을 사용하면 제네릭이 주는 안전성과 표현력을 버리게 되는 것이며 이 타입은 호환성을 위해 만들어 놓은 것이기에 사용하지 않아야 한다. 와일드 카드와 비교 했을 시에도 와일드 카드는 null이외에는 어떤 원소도 넣을 수 없게 되며 안.. 2019. 12. 3.
국제화 JSP 이용 java - com.xxxx.xxx - Config - LocaleConfig resources - message - message.properties 위의 사진과 같이 message_언어.properties로 파일을 만들며 _언어를 입력하지 않는 것이 디폴트로 설정된 언어다. @Configuration public class LocaleConfig implements WebMvcConfigurer { //bean 이름을 설정해주지 않으면 method 이름과 같아 이름 변경 @Bean(name = "localeResolver") public LocaleResolver getLocaleResolver() { //세션 사용하려는 경우 // SessionLocaleResolver slr = new Sessio.. 2019. 12. 2.
이펙티브 자바 4장 -2 추상 클래스보다는 인터페이스를 우선하라 추상클래스 방식은 자바가 단일상속만 지원하기에 새로운 타입을 정의하는데 제약을 가지게 된다. 인터페이스의 경우 어떠한 클래스를 상속했든 같은 타입으로 취급된다. 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해 넣을 수 있다. 인터페이스는 믹스인 정의에 안성맞춤이다. 믹스인이란 클래스가 구현할 수 있는 타입으로 믹스인을 구현한 클래스에 원래의 주된 타입 외에도 특정 선택적 행위를 제공한다고 선언하는 효과를 준다. 인터페이스로는 계층구조가 없는 타입 프레임워크를 만들 수 있다. 언터페이스는 기능을 향상시키는 안전하고 강력한 수단이다. 추상클래스로 정의해둔다면 그타입에 기능을 추가하는 방법은 상속뿐이며 상속해서 만든 클래스는 래퍼클래스보다 활용도가 떨어지고 깨지기는 더.. 2019. 12. 2.