package net.ranides.assira.collection.prototype;

import net.ranides.assira.reflection.IClass;

import java.util.Map;

/**
 * Represents entry stored inside PrototypeMap
 *
 * @param <V> V
 */
public interface PrototypeEntry<V> extends Map.Entry<Object, V> {

    /**
     * Returns declared type of property.
     * If some mapping was created using bounded GenericKey, its type will be returned.
     * Returns "ICass.OBJECT" if there type is not restricted.
     *
     * @return type
     */
    IClass<V> getType();

    /**
     * Returns declared map which contains this Entry.
     *
     * @return map
     */
    PrototypeMap getMap();

}
