JAVA 에서 생성자를 함수 인터페이스로 다루는 방법을 찾아보았다.
참조 사이트
Function<String, Student> constructor = Student::new;
Student one = constructor.apply("Han");
class Student {
private String name;
public Student(String name) {
this.name = name;
}
@FunctinalInterface 어노테이션을 활용하면 내가 원하는 생성자 인터페이스를 더 유연하게 정의하고 활용할 수 있는 것 같다.
@FunctionalInterface
interface MyFunctionalInterface {
Student getStudent(String name);
}
...
MyFunctionalInterface constructor = Student::new;
Student one = constructor.getStudent("Han");
수신한 메시지의 ID 를 키값으로 메시지 객체 생성자를 Map 에서 관리하여 사용할 수 있도록 구현해 보았다.
@FunctionalInterface
interface MessageConstructor {
Message construct(String[] line);
}
private final Map<String, MessageConstructor> idToConstructorMap = new HashMap<>();
...
idToConstructorMap.put(MessageSpec.SET_TARGET_ALL.id(), TargetResponse::new);