001package arez.annotations;
002
003import arez.Locator;
004import arez.component.Linkable;
005
006/**
007 * Defines the strategy for loading references from the {@link Locator}.
008 * The {@link #EAGER} strategy indicates that references should be resolved as early as
009 * possible while {@link #LAZY} defers loading until required.
010 */
011public enum LinkType
012{
013  /**
014   * Defines that the reference can be lazily loaded on access.
015   */
016  LAZY,
017  /**
018   * Defines that the reference is loaded via explicit {@link Linkable#link()} call.
019   * The link() invocation must occur before an attempt is made to access the reference.
020   */
021  EXPLICIT,
022  /**
023   * Defines that the reference is eagerly loaded on change or during initialization.
024   */
025  EAGER
026}