Strong Root


이유1: 객체 생성시 초기화 작업


일반 변수들의 경우, 생성자 없이 전역에서 바로 초기화를 해줘도 됩니다.


하지만 불가능해서 꼭 생성자에서 초기화를 해줘야하는 경우도 있습니다.


1
2
3
4
5
import java.io.FileInputStream;
 
public class FileHandler {
    private FileInputStream fis = new FileInputStream("\tmpFile");
}
cs


위 코드는 컴파일에러가 발생하며, 아래와 같이 수정해야 합니다.


1
2
3
4
5
6
7
8
9
10
import java.io.FileInputStream;
import java.io.FileNotFoundException;
 
public class FileHandler {
    private FileInputStream fis;
    
    public FileHandler() throws FileNotFoundException {
        fis = new FileInputStream("\tmpFile");
    }
}
cs


new FileInputStream() 에서 FileNotFoundException 을 throw 하므로 받아줘야 하기 때문입니다.











이유2: 객체 생성시 필수입력값을 강제하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Human {
    private String name;
    private String nickName;
    private int age;
    
    public Human(String name) {
        this.name = name;
    }
 
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
}
cs


사람 객체를 생성시 name 을 필수입력 항목으로 강제하는 코드입니다.


그외  nickName 과 age 는 원하는 경우에 한해 set 함수로 입력할 수 있습니다.