아래의 예제에서 Parent를 상속받은 Child에서 Parent의 생성자를 호출 하지 못한다.
@AllArgumentConstructor
public class Parent {
public String a;
public String b;
}
public class Child extends Parent {
public Child() {
super("", ""); // 호출 불가능!
}
}
how to Call super constructor in Lombok
위의 질문에 롬복 개발자가 남긴 답변
This is not possible in Lombok. Although it would be a really nice feature, it requires resolution to find the constructors of the super class. The super class is only known by name the moment Lombok gets invoked. Using the import statements and the classpath to find the actual class is not trivial. And during compilation you cannot just use reflection to get a list of constructors.
It is not entirely impossible but the results using resolution in val and @ExtensionMethod have taught us that is it hard and error-prone.
Disclosure: I am a Lombok developer.
리플렉션을 사용 할 때 super class의 constructor를 호출 할 수 없어서, 롬복에선 지원하지 않는다.
그로인해 롬복의 생성자 어노테이션을 사용 시 아래와 같은 제약사항이 생긴다.
@AllArgumentContructor
를 사용 할 수 없다.@AllArgumentContructor
등..)를 자식 클래스에서 (super()
를) 호출 할 수 없다.@AllArgumentConstructor
가 아닌 직접 생성해준 생성자만 자식 클래스에서 호출 가능.