Heythere, 我很确定这是不可能的,但你可以做这样的事情:
var a=emeny.class
new a();
编辑:伪代码;我想将类存储在变量中并以某种方式创建变量的对象。
我想写一个类似的方法:?
public void spawn(class c){
addObject(new c(),x,y);
}
以便稍后使用不同的参数调用它,例如:
spawn(ant);
spawn(fly);
spawn(bee);
是否可以或者我必须使用if语句?
提前致谢, Jandermannderkann
答案 0 :(得分:1)
在java中,您可以使用反射:
来完成此操作反射通常被需要能力的程序使用 检查或修改在其中运行的应用程序的运行时行为 Java虚拟机。
例如:
try {
addObject(c.newInstance(),x,y);
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
有关反思的更多信息,请阅读here 希望它有所帮助。
答案 1 :(得分:1)
我想写一个类似的方法吗?
您可以在Java中使用多态(不同的表单/类型)将不同的类型传递给spawn()
方法,并实现类似于您的代码。您可以参考here更多多态性。
(1)定义基本类型(接口)
public interface Insect {
public void add(int x, int y);
}
(2)定义具体类型(实施类)
public class Ant implements Insect {
public void add(int x, int y) {
//code
}
}
public class Bee implements Insect {
public void add(int x, int y) {
//code
}
}
public class Fly implements Insect {
public void add(int x, int y) {
//code
}
}
(3)创建一个spawn()以采用Base Type:
public class Test {
public void spawn(Insect insect){
//calls add method of either Bee or Fly or Ant Type
//Depends upon the insect object passed to this method
insect.add(x,y);
}
public static void main(String[] args) {
Test test = new Test();
Bee bee = new Bee();
Fly fly = new Fly();
//you can pass either bee or fly objects to your spawn
test.spawn(bee);
test.spawn(fly);
}
}
答案 2 :(得分:0)
Object instantiate(Class<?> a)
{
try {
return a.newInstance();
} catch (Exception e) {
//if your code ends up here it means there were a problem about instantiation
}
return null;
}
但是,我建议您在此之前了解有关基础知识的更多信息。