# Class ConfigKey<T>

java.lang.Object
uk.ac.starlink.ttools.plot2.config.ConfigKey<T>

Direct Known Subclasses:
  `BooleanConfigKey, ChoiceConfigKey, CombinationConfigKey, DoubleArrayConfigKey, DoubleConfigKey, IntegerConfigKey, OptionConfigKey, ScaleConfigKey, StringConfigKey, SubrangeConfigKey, TimeConfigKey, ToggleNullConfigKey`

public abstract class ConfigKey<T> extends Object
Typed key for use in a ConfigMap. As well as serving as a key in `ConfigMap`, this class has methods to allow a command-line or graphical interface to be constructed for the corresponding values automatically.

Note that this class does not sport the `Equality` annotation. A ConfigKey is normally considered equal only to itself, not to other similarly-named ConfigKeys.

Since:
  22 Feb 2013
Author:
  Mark Taylor

## Constructor Summary

Constructors
Constructor
Description
`ConfigKey(ConfigMeta meta, Class<T> clazz, T dflt)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`T`
`cast(Object value)`
Converts an object to the value type of this key.
`abstract Specifier<T>`
`createSpecifier()`
Constructs a graphical control with which the user can specify a suitable value for association with this key.
`T`
`getDefaultValue()`
Returns the default value associated with this key.
`ConfigMeta`
`getMeta()`
Returns metadata about this key.
`Class<T>`
`getValueClass()`
Returns the type of value described by this key.
`abstract T`
`stringToValue(String txt)`
Decodes a string value to the value type of this key.
`String`
`toString()`
`abstract String`
`valueToString(T value)`
Reports a value as a string.

### Methods inherited from class Object

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

## Constructor Details

### ConfigKey

public ConfigKey(ConfigMeta meta, Class<T> clazz, T dflt)
Constructor.

Parameters:
  `meta` - metadata describing this key
  `clazz` - value type for the values indexed by this key
  `dflt` - default value when key not present in map

## Method Details

### getMeta

public ConfigMeta getMeta()
Returns metadata about this key.

Returns:
  metadata

### getValueClass

public Class<T> getValueClass()
Returns the type of value described by this key.

Returns:
  class

### getDefaultValue

public T getDefaultValue()
Returns the default value associated with this key. This value may be used when no value is explicitly supplied for this key.

Returns:
  default value

### cast

public T cast(Object value)
Converts an object to the value type of this key.

Parameters:
  `value` - untyped value
Returns:
  typed value

### stringToValue

public abstract T stringToValue(String txt) throws ConfigException
Decodes a string value to the value type of this key. An empty string should be interpreted as a null value, but this may cause an exception if null is not a permissible value for this key.

Parameters:
  `txt` - string representation of value
Returns:
  value
Throws:
  `ConfigException`

### valueToString

public abstract String valueToString(T value)
Reports a value as a string. If at all possible the roundtripping should be possible, so `stringToValue(valueToString(v)).equals(v)`. A null value, if permitted, should be represented as an empty string.

Parameters:
  `value` - possible value associated with this key
Returns:
  string representation

### createSpecifier

public abstract Specifier<T> createSpecifier()
Constructs a graphical control with which the user can specify a suitable value for association with this key.

Returns:
  new specifier

### toString

public String toString()

Overrides:
  `toString` in class `Object`