/** * Dynamically check that the keys and values in the map are all instances of the correct types * (or null). * * @param <K> the map's key type * @param <V> the map's value type * @param map the map to cast * @param keyType the class of the map's key type. * @param valueType the class of the map's value type. * @return the dynamically-type checked map. * @throws java.lang.ClassCastException */ @SuppressWarnings("unchecked") public static <K, V> Map<K, V> dynamicallyCastMap(Map<?, ?> map, Class<K> keyType, Class<V> valueType) { if (map == null) { return null; } assert checkCollectionMembers(map.keySet(), keyType) : "The map contains keys with a type other than " + keyType.getName(); assert checkCollectionMembers(map.values(), valueType) : "The map contains values with a type other than " + valueType.getName(); return (Map<K, V>) map; } }
/** * Dynamically check that the keys and values in the map are all instances of the correct types * (or null). * * @param <K> the map's key type * @param <V> the map's value type * @param map the map to cast * @param keyType the class of the map's key type. * @param valueType the class of the map's value type. * @return the dynamically-type checked map. * @throws java.lang.ClassCastException */ @SuppressWarnings("unchecked") public static <K, V> Map<K, V> dynamicallyCastMap(Map<?, ?> map, Class<K> keyType, Class<V> valueType) { if (map == null) { return null; } assert checkCollectionMembers(map.keySet(), keyType) : "The map contains keys with a type other than " + keyType.getName(); assert checkCollectionMembers(map.values(), valueType) : "The map contains values with a type other than " + valueType.getName(); return (Map<K, V>) map; } }
/** * Dynamically check that the keys and values in the map are all instances of the correct types * (or null). * * @param <K> the map's key type * @param <V> the map's value type * @param map the map to cast * @param keyType the class of the map's key type. * @param valueType the class of the map's value type. * @return the dynamically-type checked map. * @throws java.lang.ClassCastException */ @SuppressWarnings("unchecked") public static <K, V> Map<K, V> dynamicallyCastMap(Map<?, ?> map, Class<K> keyType, Class<V> valueType) { if (map == null) { return null; } assert checkCollectionMembers(map.keySet(), keyType) : "The map contains keys with a type other than " + keyType.getName(); assert checkCollectionMembers(map.values(), valueType) : "The map contains values with a type other than " + valueType.getName(); return (Map<K, V>) map; } }
/** * Dynamically check that the members of the collection are all instances of the given type (or * null), and that the collection itself is of the given collection type. * * @param <E> the collection's element type * @param c the collection to cast * @param type the class of the collection's element type. * @return the dynamically-type checked collection. * @throws java.lang.ClassCastException */ @SuppressWarnings("unchecked") public static <E, TypedC extends Collection<E>> TypedC dynamicallyCastCollection(Collection<?> c, Class<E> type, Class<TypedC> collectionType) { if (c == null) return null; if (!collectionType.isInstance(c)) throw new ClassCastException(c.getClass().getName()); assert checkCollectionMembers(c, type) : "The collection contains members with a type other than " + type.getName(); return collectionType.cast(c); }
return null; assert checkCollectionMembers(map.keySet(), keyType) : "The map contains keys with a type other than " + keyType.getName(); assert checkCollectionMembers(map.values(), valueType) : "The map contains values with a type other than " + valueType.getName();
/** * Dynamically check that the members of the collection are all instances of the given type (or * null), and that the collection itself is of the given collection type. * * @param <E> the collection's element type * @param c the collection to cast * @param type the class of the collection's element type. * @return the dynamically-type checked collection. * @throws java.lang.ClassCastException */ @SuppressWarnings("unchecked") public static <E, TypedC extends Collection<E>> TypedC dynamicallyCastCollection(Collection<?> c, Class<E> type, Class<TypedC> collectionType) { if (c == null) return null; if (!collectionType.isInstance(c)) throw new ClassCastException(c.getClass().getName()); assert checkCollectionMembers(c, type) : "The collection contains members with a type other than " + type.getName(); return collectionType.cast(c); }
/** * Dynamically check that the members of the collection are all instances of the given type (or * null), and that the collection itself is of the given collection type. * * @param <E> the collection's element type * @param c the collection to cast * @param type the class of the collection's element type. * @return the dynamically-type checked collection. * @throws java.lang.ClassCastException */ @SuppressWarnings("unchecked") public static <E, TypedC extends Collection<E>> TypedC dynamicallyCastCollection(Collection<?> c, Class<E> type, Class<TypedC> collectionType) { if (c == null) return null; if (!collectionType.isInstance(c)) throw new ClassCastException(c.getClass().getName()); assert checkCollectionMembers(c, type) : "The collection contains members with a type other than " + type.getName(); return collectionType.cast(c); }
/** * Dynamically check that the members of the collection are all * instances of the given type (or null), and that the collection * itself is of the given collection type. * * @param <E> * the collection's element type * @param c * the collection to cast * @param type * the class of the collection's element type. * @return the dynamically-type checked collection. * @throws java.lang.ClassCastException */ @SuppressWarnings("unchecked") public static <E,TypedC extends Collection<E>> TypedC dynamicallyCastCollection(Collection<?> c, Class<E> type, Class<TypedC> collectionType) { if (c == null) return null; if (!collectionType.isInstance(c)) throw new ClassCastException(c.getClass().getName()); assert checkCollectionMembers(c, type) : "The collection contains members with a type other than " + type.getName(); return collectionType.cast(c); }