# Class EnumProperties<K>

java.lang.Object
com.macrofocus.common.properties.AbstractProperties<K>
com.macrofocus.common.properties.EnumProperties<K>

All Implemented Interfaces:
  `MutableProperties<K>, Properties<K>, Iterable<K>`

public class EnumProperties<K> extends AbstractProperties<K> implements MutableProperties<K>
Default data model for a collection of properties. ToDo: K should extends Enum<K>: EnumProperties<K extends Enum<K>>. Incompatible with JSweet

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `EnumProperties(Class<K> types)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<T> MutableProperty<T>`
  `addProperty(K name, MutableProperty<T> property)`
  `<T> MutableProperty<T>`
  `createProperty(K name, T value)`
  `MutableProperty`
  `getProperty(K name)`
  `Object`
  `getValue(K name)`
  `Iterator<K>`
  `iterator()`
  `<T> MutableProperty<T>`
  `replaceProperty(K name, MutableProperty<T> property)`
  `void`
  `setValue(K name, Object value)`

  ### Methods inherited from class AbstractProperties

  `addPropertiesListener, addWeakPropertiesListener, notifyPropertyChanged, removePropertiesListener`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Iterable

  `forEach, spliterator`

  ### Methods inherited from interface Properties

  `addPropertiesListener, addWeakPropertiesListener, removePropertiesListener`

- ## Constructor Details

  - ### EnumProperties

    public EnumProperties(Class<K> types)

- ## Method Details

  - ### iterator

    public Iterator<K> iterator()
    Specified by:
      `iterator` in interface `Iterable<K>`
    Specified by:
      `iterator` in interface `Properties<K>`

  - ### createProperty

    public <T> MutableProperty<T> createProperty(K name, T value)
    Specified by:
      `createProperty` in interface `MutableProperties<K>`

  - ### addProperty

    public <T> MutableProperty<T> addProperty(K name, MutableProperty<T> property)
    Specified by:
      `addProperty` in interface `MutableProperties<K>`

  - ### replaceProperty

    public <T> MutableProperty<T> replaceProperty(K name, MutableProperty<T> property)
    Specified by:
      `replaceProperty` in interface `MutableProperties<K>`

  - ### getValue

    public Object getValue(K name)
    Specified by:
      `getValue` in interface `Properties<K>`

  - ### setValue

    public void setValue(K name, Object value)
    Specified by:
      `setValue` in interface `MutableProperties<K>`

  - ### getProperty

    public MutableProperty getProperty(K name)
    Specified by:
      `getProperty` in interface `MutableProperties<K>`
    Specified by:
      `getProperty` in interface `Properties<K>`