private static void registerFactory ( Type t , Class < ? extends TypeInfoFactory > factory ) { Preconditions . checkNotNull ( t , "Type parameter must not be null." ) ; Preconditions . checkNotNull ( factory , "Factory parameter must not be null." ) ; if ( ! TypeInfoFactory . class . isAssignableFrom ( factory ) ) { throw new IllegalArgumentException ( "Class is not a TypeInfoFactory." ) ; } if ( registeredTypeInfoFactories . containsKey ( t ) ) { throw new InvalidTypesException ( "A TypeInfoFactory for type '" + t + "' is already registered." ) ; } registeredTypeInfoFactories . put ( t , factory ) ; }
Registers a type information factory globally for a certain type . Every following type extraction operation will use the provided factory for this type . The factory will have highest precedence for this type . In a hierarchy of types the registered factory has higher precedence than annotations at the same level but lower precedence than factories defined down the hierarchy .