1
게으른 초기화/계산 패턴에 도움이되는 "표준"클래스 (JDK, Guava, Apache *)가 있는지 궁금합니다.대중적인/표준 Java 라이브러리의 어딘가에 느리게 계산 된 값을위한 클래스가 있습니까?
나는 이런 식으로 뭔가에 대해 생각하고 있어요 (의 지금은 동기화를 무시하자) :
abstract class Lazy<T> {
T instance = null;
protected T compute();
final T get() {
if (instance == null) instance = compute();
return instance;
}
}
//...
Lazy<Foo> foo = new Lazy<Foo> {
protected Foo compute() { return Foo.expensivePart(); }
}
//...
Bar bar = foo.get().getBar();
감사합니다. 이것은 간결하고 자동적이며 이중 체크 관용구를 사용하기 때문에 Effective Java Item 71 은 현명하게 지연 초기화를 사용합니다. 더 이상 적용되지 않습니다. – DaveFar
롬복의 기능 (http://projectlombok.org/features/index.html)이 Java 7 (예 : 다이아몬드 운영 업체로 인해 val)로 인해 구식인지 궁금합니다. – DaveFar
@DaveBall 나는 롬복의 모든 특징을 좋아하지 않는다. 그러나 그들 중 일부는 매우 깔끔합니다. 몇 주 전에 StackOverflow에 대한 제안으로 발견되었습니다. 놀아도 좋지만 프로젝트가 아직 프로덕션에서 사용하기에는 충분히 성숙하지는 않습니다. 그러나 이것은 단지 제 의견이며 어쩌면저기서이 게으른로드를하는 것을 알아내는 데 도움이 될 것입니다. 어쩌면 마이클이 그걸 취해서 그와 비슷한 것을 쓴다. –