JAVA/Overview(9)
-
[Java] 메서드를 종료하는 방법 : finalizer
1. Finalizer의 사용 finalize() 메서드는 finalizer에 의해 호출됩니다. Finalizer는 JVM이 특정 인스턴스를 회수해야 한다고 판달될 때 호출합니다. 이러한 finalizer는 인스턴스를 되살리는 것을 포함하여 임의의 동작을 수행할 수 있습니다. finalizer의 주목적은 인스턴스가 사용하는 자원을 메모리에서 제거하기 전에 해제하는 것입니다. finalizer는 자원 해제 작업을 위한 주요한 메커니즘을 작동하거나 다른 메서드들이 실패할 경우 안전망으로써 작동할 수 있습니다. finalizer 작업이 어떻게 수행되는지 이해하기 위해서 다음 클래스 정의를 볼 수 있습니다. public class Finalizable { private BufferedReader reader; ..
2022.06.03 -
[Java] 직렬화(Serialization)
1. 직렬화(Serialization)란 무엇인가? 직렬화란 자바의 객체의 상태에서 바이트 스트림으로 변환하는 기술을 말합니다. 비직렬화는 반대로 바이트 스트림에서 다시 자바의 객체로 변환하는 기술입니다. 우리는 이러한 바이트 스트림을 데이터베이스에 저장하거나 네트워크를 통해서 전송할 수 있습니다. 2. 직렬화(Serialization)와 비직렬화(Deserialization) 예를 들어 한 플랫폼에서 객체를 직렬화하고 다른 플랫폼에서 역직렬화할 수 있습니다. 직렬화하고자 하는 클래스는 직렬화 가능한 인터페이스를 구현해야합니다. 다음은 Person 클래스를 직렬화하고 역직렬화하여 필드값을 참조하는 예제입니다. import java.io.Serializable; public class Person impl..
2022.05.17 -
[Java] Java Reflection API
1. Reflection API란 무엇인가? Reflection API는 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API입니다. 2. Reflection API 사례 public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; }..
2022.05.16 -
[Java] 생성자와 정적 팩토리 메서드 비교
인스턴스의 생성과 생성자의 관계 일반적으로 new 키워드를 사용하여 인스턴스를 생성하면 생성자가 수행됩니다. 주목할점은 생성자는 인스턴스를 생성하는 것이 아니라 인스턴스의 필드 멤버를 초기화하는 목적으로 수행된다는 점입니다. 정리하면 생성자는 인스턴스를 생성하는 함수가 아니라 필드 멤버를 초기화해주는 것입니다. 생성자 기본 규칙 1. 생성자의 이름은 클래스의 이름과 동일해야 합니다. 2. 생성자는 리턴 타입이 없습니다. 만약 생성자에 리턴 타입을 정의한다면 컴파일러는 생성자가 아닌 일반적인 메서드로 간주할 것입니다. 3. 생성자에 적용할 수 있는 제어자는 접근제어자로써 public, protected, default, private가 존재합니다. 기본 생성자(Default Constructor) 1. 컴..
2022.05.11 -
[Java][Thread Pool] 쓰레드 풀(Thread Pool) #2 execute()와 submit() 메서드의 차이
학습목표 1. execute와 submit 메서드의 차이를 학습 2. Java Future 클래스에 대해서 학습 1. execute()와 submit() 메서드의 차이는 무엇인가? 쓰레드 풀 객체가 쓰레드를 실행하고자 할때 대표적으로 execute() 메서드와 submit() 메서드를 사용할 수 있습니다. 하지만 대표적인 차이점은 execute() 메서드는 Future 클래스 타입의 객체를 반환하지 않는 것이고 submit() 메서드는 Future 객체를 반환한다는 점입니다. public class Task implements Runnable{ @Override public void run() { System.out.println("call " + Thread.currentThread().getName(..
2022.03.01 -
[Java][Constructor][Pattern] Builder Pattern
학습목표 1. 객체를 생성할때 문제에 대해서 학습 (인스턴스화) 2. 인스턴스화의 문제를 해결하기 위한 여러 패턴에 대해서 학습 3. Builder Pattern에 대해서 학습 1. 인스턴스화(Instantiate) 아래와 같이 Student 클래스 타입의 객체를 생성한다고 가정합니다. public class Student { private int stdno;// 학번 private String name;// 이름 private String dept;// 학과 private int age;// 나이 public Student(int stdno, String name, String dept, int age) { this.stdno = stdno; this.name = name; this.dept = dep..
2022.02.15