저는 롬복을 사용하고 코드를 최소화하려고합니다. 여기에 바닐라 자바 내 (인위적인) 상황입니다 :생성하는 동안 메서드를 실행할 수있는 방법이 있습니까?
public class MyClass {
private final int x;
private final int sqrt;
public MyClass(int x) {
this.x = x;
sqrt = (int)Math.sqrt(x);
}
// getters, etc
}
는하지만 생성자와 게터 생성 롬복를 사용하려면 : 당신이 인스턴스 고려해 볼 수 있습니다
@Getter
@RequiredArgsConstructor
public class MyClass {
private final int x;
private int sqrt;
}
클래스로 계산을 얻으려면을 블록 : 생성자,321 그래서, 실행에
{
sqrt = (int)Math.sqrt(x);
}
하지만 인스턴스 블록 전에 코드를 실행 0은 아직 초기화되지 않습니다.
RequiredArgsConstructor
에 의해 생성 된 생성자를x
이 생성자의 인수로 지정된 후 sqrt = (int)Math.sqrt(x);
을 실행,하지만 여전히 사용하는 방법이 있나요?
참고 :
- 이 게터의 계산을 코딩,
- 이 예는 실제 클래스의 총 단순화 (하나, 그것은
@Getter
을 사용하는 이점을 부정) 옵션을 선택하지 않습니다final
필드와 계산/파생 필드가 여러 개 있기 때문에 롬 보크를 사용하는 보일러 플레이트 절약이 상당합니다. - 클래스는 관리 빈이 아닌 단순 POJO DTO이므로 수명주기 javax 주석 (예 :
@PostConstruct
)은 없습니다. 모든 사용
@PostConstruct를 사용해 보셨나요? – azurefrog
당신은 https://projectlombok.org/features/GetterLazy를 사용하는 방법에 대해 lombok을 사용하고 있습니까? –
@azurefrog 클래스가 관리 빈이 아니라는 점을 제외하면 좋은 생각입니다. 그것은 단지 POJO입니다. – Bohemian