제네릭 정리제네릭에 타입 매개변수 상한을 사용해서 타입 안정성을 지키면서 상위 타입의 원하는 기능까지 사용할 수 있었다. 제네릭 타입정의: GenericClass 타입 인자 전달: 객체를 생성하는 시점예) new GenericClass 제네릭 메서드정의: T genericMethod(T t)타입 인자 전달: 메서드를 호출하는 시점예) GenericMethod.genericMethod(i) 제네릭 메서드는 클래스 전체가 아니라 특정 메서드 단위로 제네릭을 도입할 때 사용한다.제네릭 메서드를 정의할 때는 메서드의 반환 타입 왼쪽에 다이아몬드를 와 같이 타입 매개변수를 적어준다.제네릭 메서드는 메서드르 실제 호출하는 시점에 다이아몬드를 사용해서 와 같이 타입을 정하고 호출한다.인스턴스 메서드, sta..
분류 전체보기
제네릭제네릭이 필요한 이유 정리다형성을 활용한 덕분에 코드의 중복을 제거하고, 기존 코드를 재사용할 수 있게 됬다. 하지만 입력할 때 실수로 원하지 않는 타입이 들어갈 수 있는 타입 안정성 문제가 발생한다. 예를 들어 integerBox에는 숫자만 넣어야 하고, StringBox에는 문자열만 입력할 수 있어야한다. 하지만 박스에 값을 보관하는 set()의 매개변수가 Obejct 타입이기 때문에 다른 타입의 값을 입력할 수 있다. 그리고 반환 시점에서 Object를 반환하기 때문에 원하는 타입을 정확하게 받을 수 없고 항상 위험한 다운 캐스팅을 시도해야 한다. 결과적으로 이 방식은 타입 안정성이 떨어진다.다형성을 통한 중복 해결 시도 제네릭 적용제네릭을 사용하면 코드 재사용과 안정성이라는 두 마리 토끼를 ..
1. 예외 처리 도입1-1. 시작오류 코드어떤 종류의 오류가 발생했는지 구분하기 위해 예외 안에 오류 코드를 보관한다.오류 메세지오류 메세지에 어떤 오류가 발생했는지 개발자가 보고 이해할 수 있는 설명을 담아둔다. 1-2. 예외 복구 1-3. 정상, 예외 흐름 분리 1-4. 리소스 반환 문제 1-5. finally정리자바 예외 처리는 try ~ catch ~ finally 구조를 사용해서 처리할 수 있다. 덕분에 다음과 같은 이점이 있다.정상 흐름과 예외 흐름을 분리해서, 코드를 읽기 쉽게 만든다.사용한 자원을 항상 반환할 수 있도록 보장해준다. 2. 예외 계층2-1. 시작예외를 단순히 오류 코드로 분류하는 것이 아니라, 예외를 계층화해서 다양하게 만들면 더 세밀하게 예외를 처리할 수 있다. ..
자바 예외 처리1. 예외 계층자바는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외(Excpetion)를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 한다. 자바의 예외 처리는 다음 키워드를 사용한다.try, catch, finally, throw, throws 그리고 예외를 다루기 위한 예외 처리용 객체들을 제공한다. Object: 자바에서 기본형을 제외한 모든 것은 객체다. 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다.Throwable: 최상위 예외이다. 하위에 Exception과 Error가 있다.Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구가 불..
ㅁ1. 지역 클래스지역 클래스(Local class)는 내부 클래스의 특별한 종류의 하나이다. 따라서 내부 클래스의 특징을 그대로 가진다. 예를 들어 지역 클래스도 내부 클래스이므로 바깥 클래스의 인스턴스 멤버에 접근할 수 있다.지역 클래스는 지역 변수와 같이 코드 블럭 안에서 정의된다.지역 클래스의 특징지역 클래스는 지역 변수처럼 코드 블럭 안에 클래스를 선언한다지역 클래스는 지역 변수에 접근할 수 있다. package nested.nested.local;public class LocalOuterV1 { private int outInstanceVar = 3; public void process(int paramVar) { int localVar = 1; class ..