Java 我可以通过字符串名引用类吗?
我有一个实用程序列表,这些实用程序源自:Java 我可以通过字符串名引用类吗?,java,class-reference,Java,Class Reference,我有一个实用程序列表,这些实用程序源自: abstract public class BaseUtil implements Callable{ public String name; public StreamWrapper data; public void setData(StreamWrapper stream){ this.data = stream; } private static Class me = BaseUtil.class; pri
abstract public class BaseUtil implements Callable{
public String name;
public StreamWrapper data;
public void setData(StreamWrapper stream){ this.data = stream; }
private static Class me = BaseUtil.class;
private static Method[] availableUtilities = me.getDeclaredMethods();
public static Method[] getUtilities(){ return availableUtilities; }
}
我希望在每个节点上都能为其分配一个实用程序,例如:
Initialize(String utilName){
activeUtility = utilName;
gk = new GateKeeper(BaseUtil.getUtilities() <something>);
}
但我不确定如何仅从传入的字符串中获取特定的实用程序类。一个示例实用程序是:
public class WordLengthUtil extends BaseUtil {
private String name = "WordLength";
public Integer call() {
System.out.println(this.data);
return Integer.valueOf(this.data.length());
}
}
您可以使用反射:
String name = "WordLength";
String className = hashMap.get(name);
Callable plugin = (Callable) Class.forName(className).newInstance();
使用HashMap存储类名和字符串标识符之间的绑定您不能直接这样做。但是,根据传递的字符串,可以使用factory模式构建不同的对象。
String name = "WordLength";
String className = hashMap.get(name);
Callable plugin = (Callable) Class.forName(className).newInstance();