static 키워드를 붙여서 만든 객체 생성 전용 메서드이다. (static을 사용하면 객체 없이 바로 사용가능)
생성자 대신 객체를 만들고 초기값도 넣을 수 있다.
JPA에서 setter쓰지 않는게 좋다고 했는데 그것을 해결하기 위해 정적팩토리 메서드를 사용한다고 한다.
public class Member {
private String name;
// 생성자를 private으로 숨기고
private Member(String name) {
this.name = name;
}
// 정적 팩토리 메서드
public static Member of(String name) {
return new Member(name); // 내부에서 객체 생성 + 값 설정
}
public String getName() {
return name;
}
}
Member m = Member.of("홍길동");
System.out.println(m.getName()); // 👉 홍길동 출력
이런 느낌~
public class User {
private String name;
private int age;
private User(String name, int age) {
this.name = name;
this.age = age;
}
public static User of(String name, int age) {
return new User(name, age); // 내부에서 필드에 다 넣어줌
}
}
User user = User.of("철수", 25);
불변객체를 만들기 쉽다.
new 키워드 안 써도 됨
리턴 타입을 자유롭게 바꿀 수 있음