전체 글

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