/** * * TURTLE PLAYER * * Licensed under MIT & GPL * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE * OR OTHER DEALINGS IN THE SOFTWARE. * * More Information @ www.turtle-player.co.uk * * @author Simon Honegger (Hoene84) */ package com.turtleplayer.preferences; /** * @param <O> object type to store * @param <S> stored type */ public abstract class AbstractKey<O, S> { private final String key; private final O defaultValue; AbstractKey(String key, O defaultValue) { this.defaultValue = defaultValue; this.key = key; } public String getKey() { return key; } public O getDefaultValue() { return defaultValue; } public abstract S marshall(O object); public abstract O unmarshall(S object) throws UnmarshallExcpetion; public static class UnmarshallExcpetion extends Exception{ public UnmarshallExcpetion(Throwable throwable) { super(throwable); } } }