samples/componentinjection/anagram-modular/src-app-register-general/org/apidesign/anagram/app/registergeneral/Registry.java
1 package org.apidesign.anagram.app.registergeneral;
3 import java.util.LinkedHashMap;
6 public final class Registry {
7 private static Map<Class<?>,Object[]> instances = new LinkedHashMap<Class<?>,Object[]>();
12 public static void registerClass(Class<?> impl) {
13 instances.put(impl, new Object[1]);
16 public static <T> T find(Class<T> whatType) {
17 for (Map.Entry<Class<?>, Object[]> entry : instances.entrySet()) {
18 if (whatType.isAssignableFrom(entry.getKey())) {
19 if (entry.getValue()[0] == null) {
21 entry.getValue()[0] = entry.getKey().newInstance();
22 } catch (Exception ex) {
23 throw new IllegalStateException(ex);
26 return whatType.cast(entry.getValue()[0]);