好的,这就是我在代码中所拥有的:
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
}
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?
不,你不能这样做,但你可能正在寻找的是"反思".
看看这些(免费)幻灯片系列:http://www.slideshare.net/CiaranMcHale/java-reflection-explained-simple特别是幻灯片11,但也要阅读之前的那些.它将通过知道名称(作为字符串)以及如何实例化该类的新实例来让您了解反射是什么以及创建类的方法.
您还可以按名称查找方法和字段,甚至可以修改代码中的现有类.
编辑:例如,以下代码将按字符串名称返回一个类
Class cls = Class.ForName("MyPackage.MyClassName");
return cls.NewInstance();
Run Code Online (Sandbox Code Playgroud)