반응형

JAVA/포스팅 374

자바 스트림(stream)

자바 스트림(Stream)은 데이터를 다루는데 자주 사용되는 새로운 추상화입니다. 스트림은 데이터의 흐름을 나타내며, 데이터를 다루는데 자주 사용되는 고차원적인 함수형 프로그래밍의 스타일을 지원합니다. 스트림은 한 번만 사용할 수 있는 데이터 시퀀스로, 데이터를 처리하는 연산들을 지원합니다. 스트림의 주요 특징과 개념 1. 원본 데이터 소스 스트림은 컬렉션, 배열 또는 I/O 자원과 같은 원본 데이터 소스에서 생성됩니다. 2. 함수형 프로그래밍 지원 스트림은 함수형 인터페이스를 기반으로 구현되어 있습니다. 이는 람다 표현식이나 메서드 참조와 함께 사용할 수 있음을 의미합니다. 3. 내부 반복(Internal Iteration) 스트림은 내부 반복을 지원합니다. 내부 반복은 개발자가 명시적으로 루프를 작성..

JAVA/포스팅 2023.11.22

자바 Predicate의 결합

Predicate 인터페이스는 자바에서 주어진 인자에 대한 조건을 평가하는 함수형 인터페이스입니다. Predicate를 이용하면 주어진 조건을 만족하는지 여부를 판단하는 함수를 정의할 수 있습니다. Predicate의 and, or, negate 등의 메서드를 이용하면 여러 개의 Predicate를 조합하여 더 복잡한 조건을 만들 수 있습니다. 1. and 메서드 and 메서드는 현재 Predicate와 다른 Predicate를 논리적 AND로 결합하여 새로운 Predicate를 생성합니다. Predicate greaterThanTen = x -> x > 10; Predicate lessThanTwenty = x -> x < 20; Predicate betweenTenAndTwenty = greaterT..

JAVA/포스팅 2023.11.22

자바 Function의 합성

자바에서는 Function 인터페이스를 이용하여 함수의 합성(composition)을 구현할 수 있습니다. Function 인터페이스는 하나의 입력을 받아서 결과를 반환하는 함수를 표현하는 인터페이스이며, 이를 이용하여 두 개의 함수를 합성할 수 있습니다. 자바 8부터는 Function 인터페이스의 andThen 및 compose 메서드를 이용하여 함수의 합성을 지원합니다. 1. andThen 메서드 andThen 메서드는 현재 함수를 실행한 결과를 다른 함수에 전달하고, 그 결과를 반환하는 새로운 함수를 생성합니다. Function multiplyBy2 = x -> x * 2; Function add3 = x -> x + 3; // andThen을 이용한 함수 합성 Function multiplyAnd..

JAVA/포스팅 2023.11.22

자바 java.util.function패키지

java.util.function 패키지는 함수형 프로그래밍을 지원하기 위한 인터페이스들을 제공합니다. 이 패키지의 인터페이스들은 주로 람다식 및 메서드 참조와 함께 사용되며, 자주 사용되는 함수형 인터페이스들을 정의하고 있습니다. 일반적으로 널리 사용되는 함수형 인터페이스에는 Function, Consumer, Predicate, Supplier 등이 있습니다. 아래에는 java.util.function 패키지의 주요 인터페이스들과 간단한 설명이 제공됩니다. 1. Function apply(T t) 메서드를 정의하며, 입력 타입 T를 받아서 결과 타입 R을 반환합니다. 2. Consumer accept(T t) 메서드를 정의하며, 입력 타입 T를 받아서 아무런 결과를 반환하지 않습니다. 3. Predi..

JAVA/포스팅 2023.11.22

자바 함수형 인터페이스

자바의 함수형 인터페이스(Functional Interface)는 딱 하나의 추상 메서드를 가진 인터페이스를 말합니다. 이러한 인터페이스는 람다식과 함께 자주 사용되며, 함수형 프로그래밍을 지원하는 중요한 개념 중 하나입니다. 함수형 인터페이스의 특징 1. 하나의 추상 메서드: 함수형 인터페이스는 정확히 하나의 추상 메서드를 가져야 합니다. 하나의 메서드를 가지는 것이 함수형 프로그래밍의 핵심이며, 이를 통해 람다식이 사용될 수 있습니다. 2. @FunctionalInterface 애너테이션: 함수형 인터페이스를 선언할 때 @FunctionalInterface 애너테이션을 사용하면 해당 인터페이스가 함수형 인터페이스임을 명시적으로 표현할 수 있습니다. 이 애너테이션은 필수는 아니지만, 문서화와 같은 목적..

JAVA/포스팅 2023.11.22

자바 람다식 작성하기

람다식은 Java 8에서 도입된 함수형 프로그래밍을 지원하는 기능으로, 익명 함수를 간단하게 표현할 수 있습니다. 람다식을 작성하는 방법에 대해 자세히 알아보겠습니다. 람다식의 기본 문법 람다식의 기본적인 문법은 다음과 같습니다. (parameters) -> expression // 또는 (parameters) -> { statements; } parameters: 메서드에 전달되는 매개변수를 나타냅니다. ->: 람다식 연산자로서, 매개변수와 표현식 또는 코드 블록을 연결합니다. expression: 단일 표현식으로서, 람다식의 결과를 나타냅니다. { statements; }: 중괄호 안에 여러 문장을 포함하여 코드 블록을 나타냅니다. 예제 매개변수가 없는 경우 Runnable myRunnable = (..

JAVA/포스팅 2023.11.22

자바 람다식

자바 8부터 도입된 람다식은 함수형 프로그래밍을 지원하는 중요한 기능 중 하나입니다. 람다식은 익명 함수의 형태로 간결하게 표현되며, 주로 함수형 인터페이스를 구현하는데 사용됩니다. 함수형 인터페이스는 딱 하나의 추상 메서드를 갖춘 인터페이스를 말하며, 이를 통해 람다식을 적용할 수 있습니다. 람다식의 기본 문법 람다식은 다음과 같은 기본 문법을 가지고 있습니다. (parameters) -> expression 또는 (parameters) -> { statements; } (parameters): 메서드에 전달되는 매개변수를 나타냅니다. ->: 람다식 연산자로서, 매개변수와 표현식 또는 코드 블록을 연결합니다. expression: 단일 표현식으로서, 람다식의 결과를 나타냅니다. { statements;..

JAVA/포스팅 2023.11.22

자바 쓰레드 fork 프레임웍

자바에서 "fork/join" 프레임워크는 병렬 프로그래밍을 위한 도구로서, 주로 병렬화된 작업을 효율적으로 처리할 수 있게 해줍니다. 이 프레임워크는 Java 7부터 도입되었습니다. Fork/join 프레임워크의 핵심은 분할 정복(divide and conquer) 알고리즘을 사용하여 작업을 처리하고, 병렬성을 높일 수 있도록 설계되었습니다. 다음은 Fork/join 프레임워크의 주요 구성 요소와 사용 방법에 대한 간단한 설명입니다 1. ForkJoinPool 클래스 Fork/join 프레임워크에서는 작업 스레드를 관리하는데에 ForkJoinPool 클래스를 사용합니다. 이 클래스는 일종의 스레드 풀로, 작업을 여러 스레드로 분할하여 실행할 수 있도록 합니다. 2. RecursiveTask 및 Recu..

JAVA/포스팅 2023.11.22

자바 쓰레드 join 프레임웍

자바에서 join 메서드는 쓰레드 간의 실행 순서를 조절하기 위해 사용됩니다. join 메서드를 사용하면 하나의 쓰레드가 다른 쓰레드의 실행을 완료할 때까지 기다릴 수 있습니다. 1. join() 메서드 이 메서드는 특정 쓰레드의 실행이 완료될 때까지 현재 쓰레드를 일시 정지시킵니다. 즉, 다른 쓰레드의 작업이 완료될 때까지 대기합니다. Thread thread1 = new Thread(() -> { // 쓰레드1의 작업 }); Thread thread2 = new Thread(() -> { // 쓰레드2의 작업 }); thread1.start(); thread2.start(); try { thread1.join(); // 쓰레드1의 실행 완료를 기다림 thread2.join(); // 쓰레드2의 실행 ..

JAVA/포스팅 2023.11.22

자바 쓰레드 volatile

volatile 키워드는 자바에서 멀티쓰레드 환경에서 변수의 가시성(visibility)을 보장하는 데 사용됩니다. 멀티쓰레드 환경에서 여러 쓰레드가 동일한 변수를 읽고 쓰는 경우, 각 쓰레드는 로컬 캐시를 사용하여 변수의 값을 저장할 수 있습니다. 이로 인해 변수의 변경이 다른 쓰레드에게 즉시 반영되지 않을 수 있습니다. volatile 변수를 선언하면 해당 변수에 대한 모든 읽기와 쓰기 연산이 메인 메모리에서 직접 이루어지게 됩니다. 따라서 volatile을 사용하면 변수의 가시성이 보장되며, 쓰레드 간의 데이터 일관성이 유지됩니다. 아래는 volatile을 사용하는 간단한 예제입니다. public class SharedResource { private volatile boolean flag = fa..

JAVA/포스팅 2023.11.22

자바 쓰레드 Condition을 이용한 동기화

Condition은 명시적인 락과 함께 사용되어 특정 조건이 충족될 때까지 대기하거나 신호를 보내는 데 사용됩니다. Condition은 Lock 인터페이스의 일부이며, 주로 ReentrantLock 클래스와 함께 사용됩니다. 아래는 Condition을 이용한 동기화의 간단한 예제입니다. import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class SharedResource { private final Lock lock = new ReentrantLock(); private final Condition co..

JAVA/포스팅 2023.11.22

자바 쓰레드 Lock을 이용한 동기화

Lock을 이용한 동기화는 synchronized 키워드를 사용하는 전통적인 방법 대신 명시적인 락을 사용하여 동기화를 달성하는 방법입니다. Lock 인터페이스를 구현한 클래스 중 하나인 ReentrantLock을 사용하는 것이 일반적입니다. 아래는 Lock을 이용한 동기화의 예제입니다. import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Example { private final Lock lock = new ReentrantLock(); private int sharedVariable = 0; public void incrementSharedVariable() { lock...

JAVA/포스팅 2023.11.22

자바 쓰레드 Lock

자바에서 Lock 인터페이스는 명시적인 락 제어를 위한 메커니즘을 제공합니다. Lock 인터페이스를 구현한 구현체 중 가장 일반적인 것은 ReentrantLock 클래스입니다. ReentrantLock은 재진입이 가능한 락을 제공하여 동일한 쓰레드가 이미 획득한 락을 다시 획득할 수 있게 합니다. ReentrantLock 사용 예제 import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Example { private final Lock lock = new ReentrantLock(); public void performTask() { lock.lock(); // 락 획득 try..

JAVA/포스팅 2023.11.22

자바 쓰레드 notify()

notify() 메서드는 대기 중인 하나의 쓰레드를 깨워 실행할 수 있도록 하는 자바의 쓰레드 동기화 메서드 중 하나입니다. 이 메서드는 Object 클래스에서 상속되었기 때문에 모든 자바 객체에서 사용할 수 있습니다. notify() 메서드는 다음과 같이 사용됩니다. synchronized (obj) { // 어떤 조건이 충족되면 obj.notify(); // 대기 중인 하나의 쓰레드를 깨움 // 다른 작업 수행 } 여기서 obj는 객체를 나타내며, synchronized 블록 안에서 호출되어야 합니다. notify() 메서드는 현재 객체에 대해 대기 중인 하나의 쓰레드를 임의로 선택하여 깨웁니다. 이때, 깨어난 쓰레드는 락을 다시 획득하고 wait() 메서드에서 깨어나게 됩니다. 주의사항 - noti..

JAVA/포스팅 2023.11.22

자바 쓰레드 wait()

wait() 메서드는 자바에서 쓰레드 간의 협력(cooperation)을 위해 사용되는 메서드 중 하나입니다. wait() 메서드는 객체의 락(lock)을 해제하고 현재 실행 중인 쓰레드를 대기 상태로 만듭니다. 다른 쓰레드가 동일한 객체의 notify() 또는 notifyAll() 메서드를 호출하여 대기 중인 쓰레드를 깨우면, 해당 쓰레드는 다시 락을 획득하고 실행을 재개합니다. wait() 메서드는 다음과 같이 사용됩니다. synchronized (obj) { while (conditionIsNotMet()) { try { obj.wait(); // 현재 쓰레드를 대기 상태로 만듭니다. } catch (InterruptedException e) { // InterruptedException 처리 } ..

JAVA/포스팅 2023.11.22

자바 쓰레드 synchronized를 이용한 동기화

자바에서 synchronized 키워드를 이용한 동기화는 쓰레드 간의 경쟁 조건과 같은 문제를 해결하기 위해 사용됩니다. synchronized를 사용하면 특정 블록 또는 메서드에 대한 임계 영역(critical section)에 대한 동기화를 보장할 수 있습니다. 1. 동기화 메서드 public class SynchronizedExample { private int count = 0; // synchronized 메서드 public synchronized void increment() { count++; } // synchronized 메서드 public synchronized void decrement() { count--; } public synchronized int getCount() { ret..

JAVA/포스팅 2023.11.21

자바 쓰레드의 동기화

자바에서 쓰레드 동기화는 여러 쓰레드가 공유 자원에 접근할 때 발생하는 문제를 해결하기 위한 기술입니다. 주로 데이터의 일관성과 정확성을 보장하기 위해 사용됩니다. 아래는 쓰레드 동기화에 관련된 주요 개념과 메커니즘입니다. 1. 임계 영역 (Critical Section) - 여러 쓰레드가 공유 자원에 동시에 접근하는 부분을 "임계 영역" 또는 "Critical Section"이라고 합니다. - 여러 쓰레드가 동시에 접근하면 문제가 발생할 수 있기 때문에 이 부분을 동기화해야 합니다. 2. 동기화 메서드와 동기화 블록 메서드 전체를 동기화하려면 메서드에 synchronized 키워드를 사용할 수 있습니다. public synchronized void synchronizedMethod() { // 동기화가..

JAVA/포스팅 2023.11.21

자바 쓰레드의 실행제어

자바에서 쓰레드의 실행을 제어하기 위한 주요 메서드 및 기법은 다음과 같습니다. 1. start() 메서드 - start() 메서드를 호출하여 쓰레드를 실행시킵니다. - 내부적으로 JVM이 새로운 쓰레드를 생성하고 run() 메서드를 호출합니다. Thread myThread = new MyThread(); myThread.start(); 2. join() 메서드 - join() 메서드를 호출한 쓰레드는 해당 쓰레드의 종료를 기다립니다. - 다른 쓰레드에서 join()을 호출한 경우, 해당 쓰레드가 종료될 때까지 대기합니다. Thread myThread = new MyThread(); myThread.start(); myThread.join(); // 현재 쓰레드가 myThread의 종료를 기다림 3. s..

JAVA/포스팅 2023.11.21

자바 데몬 쓰레드(daemon thread)

자바에서 데몬 쓰레드(daemon thread)는 일반 쓰레드의 보조 역할을 하는 쓰레드입니다. 주 쓰레드(메인 쓰레드)가 종료되면 데몬 쓰레드는 강제적으로 종료되며, 주 쓰레드가 실행 중이면 데몬 쓰레드는 계속해서 실행됩니다. 데몬 쓰레드는 주로 백그라운드 작업을 수행하거나 주 쓰레드들을 지원하는 역할을 합니다. 예를 들어, 가비지 컬렉션, 자동 저장 등이 데몬 쓰레드로 구현될 수 있습니다. 데몬 쓰레드 생성 데몬 쓰레드를 생성하려면 해당 쓰레드 객체를 생성한 후 setDaemon(true) 메서드를 호출해야 합니다. Thread daemonThread = new Thread(new MyDaemonRunnable()); daemonThread.setDaemon(true); daemonThread.sta..

JAVA/포스팅 2023.11.21

자바 쓰레드 그룹(thread group)

자바에서 쓰레드 그룹은 관련된 쓰레드를 묶어서 관리하는 데 사용되는 객체입니다. 쓰레드 그룹은 자바에서 쓰레드를 구조화하고 계층 구조로 표현할 수 있게 합니다. 주로 쓰레드를 논리적으로 그룹화하고 쓰레드 그룹 단위로 작업을 처리하기 위해 사용됩니다. 1. 쓰레드 그룹 생성 쓰레드 그룹은 ThreadGroup 클래스를 통해 생성됩니다. 생성자는 다음과 같습니다. ThreadGroup group = new ThreadGroup("GroupName"); 2. 쓰레드 그룹에 쓰레드 추가 ThreadGroup 클래스는 Thread 객체나 ThreadGroup 객체를 통해 쓰레드를 그룹에 추가하는 메서드를 제공합니다. ThreadGroup group = new ThreadGroup("GroupName"); Thre..

JAVA/포스팅 2023.11.21

자바 쓰레드의 우선순위

자바에서 쓰레드의 우선순위는 쓰레드 스케줄링에서 사용되며, 쓰레드가 어떤 순서로 실행될지 결정하는 데 영향을 미치는 값입니다. Java에서는 쓰레드의 우선순위를 1에서 10까지의 정수로 표현하며, 숫자가 높을수록 우선순위가 높습니다. 기본적으로 모든 쓰레드의 우선순위는 5입니다. 쓰레드 우선순위 설정 쓰레드의 우선순위를 설정하려면 setPriority(int priority) 메서드를 사용합니다. 이 메서드는 쓰레드에게 우선순위를 할당합니다. Thread thread = new Thread(); thread.setPriority(Thread.MAX_PRIORITY); // 최대 우선순위 쓰레드 우선순위 조회 현재 실행 중인 쓰레드의 우선순위를 확인하려면 getPriority() 메서드를 사용합니다. in..

JAVA/포스팅 2023.11.21

자바 멀티쓰레드

자바에서 멀티 스레드는 동시에 여러 작업을 수행하는 데 사용됩니다. 멀티 스레드를 사용하면 여러 작업을 동시에 수행하여 프로그램의 성능을 향상시킬 수 있습니다. 다만, 동시에 여러 스레드가 실행되므로 스레드 간의 동기화와 관련된 문제에 주의해야 합니다. 멀티 스레드의 특징 1. 병렬 실행 : 여러 스레드가 동시에 실행되므로 여러 작업을 병렬로 수행할 수 있습니다. 2. 독립성 : 각 스레드는 독립적으로 실행되며, 다른 스레드의 영향을 받지 않고 자신의 작업을 수행합니다. 3. 공유 자원 : 여러 스레드가 메모리 등의 자원을 공유할 수 있습니다. 이로 인해 동기화 문제가 발생할 수 있습니다. 4. 비동기성 : 다른 스레드가 작업 중인 동안에도 다른 스레드가 작업을 수행할 수 있습니다. 멀티 스레드 예제 c..

JAVA/포스팅 2023.11.21

자바 싱글쓰레드

자바에서 싱글 스레드는 하나의 실행 흐름을 가지는 스레드를 말합니다. 즉, 프로그램이 실행될 때 메인 스레드만 사용되며, 다른 별도의 스레드는 생성되지 않습니다. 이는 자바 어플리케이션에서 일반적인 상황 중 하나입니다. 싱글 스레드의 특징 1. 순차적 실행 : 프로그램이 한 번에 하나의 작업만을 처리하므로 명령어가 순차적으로 실행됩니다. 2. 단일 흐름 : 하나의 메인 스레드만이 존재하며, 별도의 스레드를 생성하지 않습니다. 3. 간단한 동기화 : 다른 스레드와 공유하는 자원에 대한 동기화 문제가 발생하지 않습니다. 여러 스레드 간의 경쟁 조건과 데드락 같은 복잡한 동기화 문제는 발생하지 않습니다. 싱글 스레드 예제 public class SingleThreadExample { public static ..

JAVA/포스팅 2023.11.21

자바 쓰레드 start()와 run()

자바에서 쓰레드를 생성하고 실행시키기 위해서는 start()와 run() 메서드를 사용합니다. 이 두 메서드는 각각 쓰레드의 생성 및 실행에 관련된 역할을 합니다. 1. start() 메서드 start() 메서드는 Thread 클래스의 메서드로, 운영체제에게 새로운 쓰레드를 생성하라고 요청합니다. 이 메서드를 호출하면 다음과 같은 일이 발생합니다. - 새로운 쓰레드가 생성됩니다. - 새로운 쓰레드는 run() 메서드를 실행하기 위해 대기 상태로 들어갑니다. - 운영체제가 스케줄링에 따라 생성된 쓰레드를 실행시킵니다. Thread myThread = new Thread(new MyRunnable()); myThread.start(); 2. run() 메서드 run() 메서드는 실제로 쓰레드에서 수행하고자 ..

JAVA/포스팅 2023.11.21

자바 쓰레드의 구현과 실행

자바에서 쓰레드(Thread)를 구현하고 실행하는 방법은 크게 두 가지입니다. 하나는 Runnable 인터페이스를 구현하는 방법이고, 다른 하나는 Thread 클래스를 상속하는 방법입니다. 1. Runnable 인터페이스 구현 Runnable 인터페이스를 구현하는 방법은 객체 지향적이며, 다중 상속이 가능합니다. 아래는 간단한 예제입니다. // Runnable을 구현한 클래스 class MyRunnable implements Runnable { public void run() { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getId() + " Value " + i); } } } public class Main { pub..

JAVA/포스팅 2023.11.21

자바 쓰레드(Thread)

자바에서 쓰레드(Thread)는 동시에 여러 작업을 수행할 수 있도록 하는 프로그래밍 단위입니다. 쓰레드를 사용하면 여러 작업을 동시에 수행하여 프로그램의 성능을 향상시킬 수 있습니다. 다음은 자바에서 쓰레드를 다루는 기본적인 내용에 대한 설명입니다. 1. 쓰레드 생성 방법 자바에서는 보통 두 가지 방법으로 쓰레드를 생성할 수 있습니다. 1.1 Thread 클래스 상속 class MyThread extends Thread { public void run() { // 쓰레드가 실행할 작업 정의 } } // 사용 예제 MyThread myThread = new MyThread(); myThread.start(); // 쓰레드 실행 1.2 Runnable 인터페이스 구현 class MyRunnable impl..

JAVA/포스팅 2023.11.21

자바 애너테이션 타입 정의하기

자바 애너테이션(Annotation)을 정의할 때는 @interface를 사용하여 애너테이션 타입을 선언합니다. 애너테이션은 주로 소스 코드에 정보를 추가하거나 컴파일러에게 특정 작업을 수행하도록 지시하는 데 사용됩니다. 다음은 애너테이션 타입을 정의하는 방법에 대한 설명입니다. 1. 애너테이션 타입 선언 public @interface MyAnnotation { // 애너테이션 멤버 String value(); // 기본 요소 (element) int number() default 42; // 기본값이 있는 멤버 String[] names(); // 배열을 사용하는 멤버 } - @interface : 애너테이션을 정의할 때 사용되는 키워드입니다. - MyAnnotation : 애너테이션의 이름입니다. ..

JAVA/포스팅 2023.11.21

자바 메타 애너테이션

자바에서 메타 애너테이션은 애너테이션을 정의할 때 사용되는 애너테이션으로, 애너테이션을 어떻게 사용해야 하는지를 나타냅니다. 메타 애너테이션은 컴파일러에게 애너테이션을 어떻게 처리해야 하는지 지시하고, 런타임에 리플렉션을 통해 애너테이션 정보를 읽을 수 있도록 합니다. 다음은 몇 가지 주요한 메타 애너테이션입니다. 1. @Retention - 목적 : 애너테이션의 유지 정책을 지정합니다. 즉, 애너테이션 정보를 언제까지 유지할 것인지를 나타냅니다. - 옵션 : -- RetentionPolicy.SOURCE : 소스 코드까지만 유지. 컴파일 이후 사라짐. -- RetentionPolicy.CLASS : 클래스 파일까지 유지. 런타임 시에는 사라짐 (기본값). -- RetentionPolicy.RUNTIME..

JAVA/포스팅 2023.11.21

자바 표준 애너테이션

자바에서는 표준 라이브러리와 프레임워크에서 자주 사용되는 몇 가지 표준 애너테이션을 제공합니다. 이러한 표준 애너테이션들은 주로 컴파일 타임에 또는 런타임에 특정한 작업을 지시하거나 정보를 제공하기 위해 사용됩니다. 다음은 몇 가지 표준 애너테이션의 예시입니다. 1. @Override - 목적 : 메서드가 슈퍼 클래스의 메서드를 재정의하고 있음을 나타냅니다. - 사용 예시 : @Override public void myMethod() { // 메서드 내용 } 2. @Deprecated - 목적 : 해당 요소가 더 이상 권장되지 않음을 나타냅니다. - 사용 예시 : @Deprecated public void oldMethod() { // 메서드 내용 } 3. @SuppressWarnings - 목적 : 특..

JAVA/포스팅 2023.11.21

자바 애너테이션

자바 애너테이션(Annotation)은 소스 코드에 메타데이터를 추가하는 방법 중 하나로, 프로그램에게 코드에 대한 정보를 제공합니다. 애너테이션은 주로 컴파일러, 개발 도구, 프레임워크 등에게 추가적인 정보를 제공하여 코드를 분석하거나 생성하는 데 사용됩니다. 애너테이션은 @ 기호로 시작하며, 자바 5(자바 1.5)부터 도입되었습니다. 애너테이션은 주로 다음과 같은 목적으로 사용됩니다. 1. 컴파일 타임 체크: 애너테이션을 사용하여 코드의 오류를 미리 방지하고, 컴파일러에게 특정한 경고나 에러를 생성하도록 지시할 수 있습니다. 2. 런타임 처리: 애너테이션을 사용하여 런타임 시에 코드의 동작을 변경하거나 수정할 수 있습니다. 3. 문서화: 애너테이션을 사용하여 코드의 문서화에 도움을 주고, 특정 요소에..

JAVA/포스팅 2023.11.21