import java.util.*; public class Map_StandardConstructors_1 { // BadMap0 does not define any of the 'standard' constructors. static class BadMap0<K, V> extends AbstractMap<K, V> { public Set<Map.Entry<K, V>> entrySet() { return null; } } // BadMap1 defines only one of the 'standard' constructors. static class BadMap1 extends BadMap0 { public BadMap1() { } } // BadMap2 defines only one of the 'standard' constructors. static class BadMap2 extends BadMap0 { public BadMap2(Map src) { } } // GoodMap defines both of the 'standard' constructors. static class GoodMap extends BadMap0 { public GoodMap() { } public GoodMap(Map src) { } } public static void main(String[] args) { Map c1 = new GoodMap(); Map c2 = new BadMap1(); Map c3 = new BadMap2(c1); } }