Skip to content

Instantly share code, notes, and snippets.

@nantsou
Created July 15, 2018 18:18
Show Gist options
  • Save nantsou/2875f965112a7924d1279ff05c3a40dd to your computer and use it in GitHub Desktop.
Save nantsou/2875f965112a7924d1279ff05c3a40dd to your computer and use it in GitHub Desktop.
package parser;
import java.util.Map;
import java.util.HashMap;
import java.lang.reflect.Constructor;
public class ParserFactory {
private Map<String, Class<?>> classMap;
public ParserFactory() {
classMap = new HashMap<>();
classMap.put("integer", IntegerParser.class);
classMap.put("double", DoubleParser.class);
classMap.put("string", StringParser.class);
}
@SuppressWarnings("unchecked")
public <E> E create(String className) {
E parser;
Class<?> clazz = classMap.get(className);
try {
Constructor<?> ctor = clazz.getConstructor();
parser = (E) ctor.newInstance();
} catch (Throwable e) {
System.err.println(e);
parser = null;
}
return parser;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment