package org.archstudio.bna.keys; import org.archstudio.bna.IThing; import org.archstudio.bna.logics.coordinating.DynamicStickPointLogic; /** * Describes a key that captures metadata about another key's data: K is the other key, N is the name of the metadata * property for that other key's data, and T is the type of {@link IThing} that the reference should refer to. Logics * use this to capture extra data about specific properties and to relate that data to the property. See * {@link IThingMetakey} for more detail. * <p> * As an example, the {@link DynamicStickPointLogic#getStickyThingKey(IThingKey)} uses this type of key to capture the * desired thing that a particular point is stuck to. * <p> * * @param <T> * The type of {@link IThing} the value should reference * @param <N> * The name of the metadata being captured * @param <K> * The other key for which metadata is being captured */ public interface IThingRefMetakey<T extends IThing, N, K extends IThingKey<?>> extends IThingRefKey<T>, IThingMetakey<N, K, Object> { @Override N getName(); @Override K getKey(); }