effective java3 [Effective Java] 28. 배열보다는 리스트를 사용해라 배열과 제네릭 타입의 차이 배열은 공변(covariant)이다. 예를들어 sub가 super의 하위 타입이라면 배열 sub[]는 배열 super[]의 하위 타입이 된다고 할 수 있다. 즉, 공변이란 함께 변한다는 뜻이다. 반대로 제네릭은 불공변(invariant)이다. List 는 List 의 하위 타입도 아니고 상위 타입도 아니다. 예제를 확인해보자. Object[] objectArray = new Long[1]; //ArrayStoreException 발생 => Long 타입에 String을 넣을 수 없음. objectArray[0] = "루피"; //컴파일시점 에러 List objectList = new ArrayList(); objectList.add("루피"); 제네릭과 다르게 배열은 실체화(r.. 2019. 7. 17. [Effective Java] try with resources try with resources를 사용해라 Effective Java를 보다가 신기한 부분을 발견했다. 나는 보통 try ~ catch, try ~ catch ~ finally 등 단순히 예외처리를 할 때 사용한다. 라는게 내가 아는 전부였다. 자바 라이브러리에는 close메소드를 호출해 직접 닫아줘야 하는 자원이 많다. 대표적으로 InputStream, OutputStream, java.sql.Connection 등이 있다. 대부분이 try-finally를 사용해 close메소드를 사용하곤 한다. static String firstLineOfFile(String path)throws IOException { BufferedReader br = new BufferedReader(new FileReade.. 2019. 3. 29. 빌더 패턴(Builder Pattern) 빌더 패턴(Builder Pattern)빌더 패턴은 객체를 생성할 때 흔하게 사용하는 패턴이다..build()라는 코드를 봤다면, 빌더 패턴을 사용했다고 할 수 있다.나 역시 이 코드를 보고 이게 뭐지?? 하고 찾아보게 되었다.Effective Java의 빌더 패턴객체 생성을 깔끔하고 유연하게 하기 위한 기법점층적 생성자 패턴만드는 방법필수 인자를 받는 필수 생성자를 하나 만든다.1개의 선택적 인자를 받는 생성자를 추가한다.2개의 선택적 인자를 받는 생성자를 추가한다....반복모든 선택적 인자를 다 받는 생성자를 추가한다.//점층적 생성자 패턴 코드 예제 : 회원가입 public class Memeber { private final String name; //필수 인자 private final Strin.. 2019. 3. 21. 이전 1 다음