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}