@SuppressWarnings("unchecked") // protected by 'if (type.isAssignableFrom(clazz)) {' public final void loadClassesFromMap(final Map<?, ?> properties, final Class<O> type) { final ClassLoader loader = ReflectionUtil.getClassLoader(); for (Entry<?, ?> entry : properties.entrySet()) { final String className = entry.getValue().toString(); final String name = entry.getKey().toString(); try { final Class<?> clazz = loader.loadClass(className); if (type.isAssignableFrom(clazz)) { registerClass(name, (Class<? extends O>) clazz); } else { throw new MetafactureException( className + " does not implement " + type.getName() + " registration with " + this.getClass().getSimpleName() + " failed."); } } catch (ClassNotFoundException e) { throw new MetafactureException(className + " not found", e); } } }
@SuppressWarnings("unchecked") // protected by 'if (type.isAssignableFrom(clazz)) {' public static <O> Class<? extends O> loadClass(final String className, final Class<O> baseType) { Class<?> clazz; try { clazz = ReflectionUtil.getClassLoader().loadClass(className); } catch (ClassNotFoundException e) { throw new MetafactureException(className + " not found.", e); } if (baseType.isAssignableFrom(clazz)) { return (Class<? extends O>) clazz; } throw new MetafactureException(className + " must extend or implement " + baseType.getName()); }