Java 정리 4

리플렉션

클래스가 제공하는 다양한 정보를 동적으로 분석하고 사용하는 기능을 리플렉션(Reflection) 이라 한다. 리플렉션을 통해 프로그램 실행 중에 클래스, 메서드, 필드 등에 대한 정보를 얻거나, 새로운 객체를 생성하고 메서드를 호출하며, 필드의 값을 읽고 쓸 수 있다. 리플렉션을 통해 얻을 수 있는 정보는 다음과 같다.클래스의 메타데이터 : 클래스 이름, 접근 제어자, 부모 클래스, 구현된 인터페이스 등.필드 정보 : 필드의 이름, 타입, 접근 제어자를 확인하고, 해당 필드의 값을 읽거나 수정할 수 있다.메서드 정보 : 메서드 이름, 반환 타입, 매개변수 정보를 확인하고, 실행 중에 동적으로 메서드를 호출할 수 있다.생성자 정보 : 생성자의 매개변수 타입과 개수를 확인하고, 동적으로 객체를 생성할 수 있..

Java 정리 2024.12.27

채팅 프로그램

입장 : /join|{name} : 처음 채팅 서버에 접속할 때 사용자의 이름을 입력해야 한다.메시지  /message|{내용} : 모든 사용자에게 메시지를 전달한다.이름 변경 /change|{name} : 사용자의 이름을 변경한다.전체 사용자 /users : 채팅 서버에 접속한 전체 사용자 목록을 출력한다.종료  /exit : 채팅 서버의 접속을 종료한다.  블록킹 되어 있는 것들은 분리를 해야한다. 면 서버에서 모든 세션을 관리해야 한다. 그렇게 해야 모든 세션에 메시지를 전달할 수 있다. 세션을 관리하는 세션 매니저를 사용한다.   Client 구현public class ReadHandler implements Runnable { private final Client client; pub..

Java 정리 2024.12.25

Logger

현재 어떤 스레드가 코드를 실행하는지 출력하기 위해 다음과 같이 긴 코드를 작성하는 것은 너무 번거롭다. 현재 시간, 스레드 이름, 출력 내용등이 한번에 나오는 것을 알 수 있는 기능을 만드는 것이 좋다.import java.time.LocalTime;import java.time.format.DateTimeFormatter;public class MyLogger { private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS"); public static void log(Object obj) { String time = LocalTime.now().format(formatte..

Java 정리 2024.11.22