好的,所以,这就是我在代码中所拥有的:
public void makeObject(int i){
String s = getString(i); //This returns the name of a class
new s(); //This is what I want to do
}
我可以这样做吗?
答案 0 :(得分:9)
不,你不能这样做,但你可能正在寻找的是'反射'。
看看这些系列的(免费)幻灯片:http://www.slideshare.net/CiaranMcHale/java-reflection-explained-simply特别是幻灯片11,但也请阅读之前的幻灯片。它将通过知道名称(作为字符串)以及如何实例化该类的新实例来让您了解反射是什么以及创建类的方法。
您还可以按名称查找方法和字段,甚至可以修改代码中的现有类。
编辑:例如,以下代码将按字符串名称
返回一个类Class cls = Class.ForName("MyPackage.MyClassName");
return cls.NewInstance();