Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * The contents of this file are subject to the terms
   * of the Common Development and Distribution License
   * (the License). You may not use this file except in
   * compliance with the License.
   * 
   * You can obtain a copy of the License at
   * https://javaserverfaces.dev.java.net/CDDL.html or
   * legal/CDDLv1.0.txt. 
  * See the License for the specific language governing
  * permission and limitations under the License.
  * 
  * When distributing Covered Code, include this CDDL
  * Header Notice in each file and include the License file
  * at legal/CDDLv1.0.txt.    
  * If applicable, add the following below the CDDL Header,
  * with the fields enclosed by brackets [] replaced by
  * your own identifying information:
  * "Portions Copyrighted [year] [name of copyright owner]"
  * 
  * [Name of File] [ver.__] [Date]
  * 
  * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
  */
 
 package javax.faces;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
  class TypedCollections {

    
Dynamically check that the members of the collection are all instances of the given type (or null).
 
     private static boolean checkCollectionMembers(Collection<?> cClass<?> type) {
         for (Object element : c) {
             if (element != null && !type.isInstance(element)) {
                 return false;
             }
         }
         return true;
     }

    
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.

Parameters:
<E> the collection's element type
c the collection to cast
type the class of the collection's element type.
Returns:
the dynamically-type checked collection.
Throws:
java.lang.ClassCastException
 
     @SuppressWarnings("unchecked")
      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(ctype) :
             "The collection contains members with a type other than " + type.getName();
 
         return collectionType.cast(c);
     }

    
Dynamically check that the members of the list are all instances of the given type (or null).

Parameters:
<E> the list's element type
list the list to cast
type the class of the list's element type.
Returns:
the dynamically-type checked list.
Throws:
java.lang.ClassCastException
 
     @SuppressWarnings("unchecked")
      static <E> List<E> dynamicallyCastList(List<?> listClass<E> type) {
         return dynamicallyCastCollection(listtypeList.class);
     }

    
Dynamically check that the members of the set are all instances of the given type (or null).

Parameters:
<E> the set's element type
set the set to cast
type the class of the set's element type.
Returns:
the dynamically-type checked set.
Throws:
java.lang.ClassCastException
    @SuppressWarnings("unchecked")
     static <E> Set<E> dynamicallyCastSet(Set<?> set
                                                      Class<E> type) {
        return dynamicallyCastCollection(settypeSet.class);
    }

    
Dynamically check that the keys and values in the map are all instances of the correct types (or null).

Parameters:
<K> the map's key type
<V> the map's value type
map the map to cast
keyType the class of the map's key type.
keyType the class of the map's key type.
Returns:
the dynamically-type checked map.
Throws:
java.lang.ClassCastException
    @SuppressWarnings("unchecked")
     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;
    }
New to GrepCode? Check out our FAQ X