001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.vector;
003
004/**
005 * An interface for objects that are part of a data layer
006 * @param <T> The type used to identify a layer, typically a string
007 */
008public interface DataLayer<T> {
009    /**
010     * Get the layer
011     * @return The layer
012     */
013    T getLayer();
014
015    /**
016     * Set the layer
017     * @param layer The layer to set
018     * @return {@code true} if the layer was set -- some objects may never change layers.
019     */
020    default boolean setLayer(T layer) {
021        return layer != null && layer.equals(getLayer());
022    }
023}