diff --git a/src/main/java/org/scijava/optional/AbstractOptions.java b/src/main/java/org/scijava/optional/AbstractOptions.java index 0e6777a..eb6f998 100644 --- a/src/main/java/org/scijava/optional/AbstractOptions.java +++ b/src/main/java/org/scijava/optional/AbstractOptions.java @@ -1,9 +1,11 @@ package org.scijava.optional; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; +import java.util.Set; -public abstract class AbstractOptions< T extends AbstractOptions< T > > implements Options< T > +public abstract class AbstractOptions< T extends AbstractOptions< T > > implements Options< T >, Map { final LinkedHashMap< String, Object > theOptions = new LinkedHashMap<>(); @@ -57,4 +59,64 @@ public String toString() sb.append( "}" ); return sb.toString(); } + + @Override + public int size() { + return theOptions.size(); + } + + @Override + public boolean isEmpty() { + return theOptions.isEmpty(); + } + + @Override + public boolean containsKey(Object key) { + return theOptions.containsKey(key); + } + + @Override + public boolean containsValue(Object value) { + return theOptions.containsValue(value); + } + + @Override + public Object get(Object key) { + return theOptions.get(key); + } + + @Override + public Object put(String key, Object value) { + return theOptions.put(key, value); + } + + @Override + public Object remove(Object key) { + return theOptions.remove(key); + } + + @Override + public void putAll(Map m) { + theOptions.putAll(m); + } + + @Override + public void clear() { + theOptions.clear(); + } + + @Override + public Set keySet() { + return theOptions.keySet(); + } + + @Override + public Collection values() { + return theOptions.values(); + } + + @Override + public Set> entrySet() { + return theOptions.entrySet(); + } }