2025/01/13 7

[Java] 28. 제네릭 - Generic(2)

제네릭 - Generic(2)#Java정리저번 챕터처럼 크게 제네릭 타입, 타입 매개변수를 이용하여 코드를 개선하는 예제를 봐보자.package generic.ex3;public class AnimalHospitalV2 { private T animal; public void set(T animal) { this.animal = animal; } public void checkup() { // T의 타입을 메서드를 정의하는 시점에는 알 수 없다. Object의 기능만 사용 가능 animal.toString(); animal.equals(null); // 컴파일 오류 //System.out.println("동물..

[Java] 27. 제네릭 - Generic(1)

제네릭 - Generic(1)#Java정리제네릭이 필요한 이유코드 재사용을 늘리기 위해 Object와 다형성을 사용하면 타입 안전성이 떨어지는 문제가 발생한다.각각의 타입별로 IntegerBox, StringBox와 같은 클래스를 모두 정의코드 재사용X타입 안전성OObjectBox를 사용해서 다형성으로 하나의 클래스만 정의코드 재사용O타입 안전성X제네릭 적용제네릭을 사용하면 코드 재사용과 타입 안전성이라는 두 마리 토끼를 한 번에 잡을 수 있다.예시package generic.ex1;public class GenericBox { private T value; public void set(T value) { this.value = value; } public T get()..

[Java] 26. 예외 처리 - 실전

예외 처리 - 실전#Java정리이전 챕터에서 해결하지 못했던 문제들을 예외 처리를 이용하여 해결해보자.예외 클래스public class NetworkClientExceptionV2 extends Exception { private String errorCode; public NetworkClientExceptionV2(String errorCode, String message) { super(message); this.errorCode = errorCode; } public String getErrorCode() { return errorCode; }}어떤 종류의 오류가 발생했는지 구분하기 위해 예외 안에 오류 코드를 보관하도록 설계한다.클..

[Java] 25. 예외 처리 - 이론

예외 처리 1 - 이론#Java정리예외 처리를 왜 해야할까?사용자의 입력을 받고, 입력 받은 문자를 외부 서버에 전송하는 프로그램을 생각해보자.NetworkClient : 외부 서버와 연결하고, 데이터를 전송하고, 연결을 종료하는 기능을 제공한다.NetworkService : NetworkClient를 사용해서 데이터를 전송한다. NetworkClient를 사용하려면 연결, 전송, 연결 종료와 같은 복잡한 흐름을 제어해야 하는데, 이런 부분을 NetworkService가 담당한다.Main을 통해 사용자의 입력을 받으면 사용자의 입력을 NetworkService에 전달한다.NetworkService는 NetworkClient를 사용해서 외부 서버에 연결하고, 데이터를 전송하고, 전송이 완료되면 연결을 종료..

[Java] 24. 중첩 클래스, 내부 클래스(2)

중첩 클래스, 내부 클래스(2)#Java정리이전 시간에 배운 내용정적 중첩 클래스: 바깥 클래스와 밀접한 관련이 있지만, 인스턴스 간에 데이터 공유가 필요 없을 때 사용한다.내부 클래스: 바깥 클래스의 인스턴스와 연결되어 있고, 바깥 클래스의 인스턴스 상태에 의존하거나 강하게 연관된 작업을 수행할 때 사용한다.지역 클래스내부 클래스의 특징을 가진다.지역 변수에 접근할 수 있다. 접근하는 지역 변수는 final이거나 사실상 final이어야 한다.주로 특정 메서드 내에서만 간단히 사용할 목적으로 사용한다.지역 변수처럼 접근 제어자를 사용할 수 없다.바깥 클래스의 인스턴스 변수에 접근할 수 있고, 자신의 env에 속한 지역 변수와 매개변수에 접근할 수 있다.내부 클래스를 포함한 중첩 클래스들도 일반 클래스처럼..

[Java] 23. 중첩 클래스, 내부 클래스(1)

중첩 클래스, 내부 클래스(1)#Java정리중첩 클래스, 내부 클래스란?클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라 한다.class Outer { ... //중첩 클래스 class Nested { ... }}중첩 클래스의 분류중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스정적 변수오 같은 위치내부 클래스 종류내부 클래스인스턴스 변수와 같은 위치바깥 클래스의 인스턴스의 멤버에 접근지역 클래스지역 변수와 같은 위치내부 클래스의 특징 + 지역 변수에 접근익명 클래스지역 클래스의 특징 + 클래스의 이름이 없는 특별한 클래스중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다.여기서 정적 중첩 클래스와 내부 클래스로 분류하는 ..