【发布时间】:2013-11-15 16:51:36
【问题描述】:
假设我有两个不同的类来声明对象:Cat 类和 Dog 类。它们都是对象。
现在在我的主类中,我想接受一个字符串值(“狗”或“猫”),并创建一个该类型的对象。而且我不希望有案例,我正在寻找一种动态的方式来创建对象。
例如:
public static void main(String [] args){
String object_name = "Dog";
//this is where I want to dynamically create the object
object_name bob = new object_name();
}
在这种情况下,它将创建一个变量名为 bob 的 Dog 对象。
感谢您的帮助。
编辑##
我用的方法:
public static Object generate(String type) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
Class<?> c = Class.forName(type);
Constructor<?> ctor = c.getConstructor(String.class);
Object object = ctor.newInstance("9");
return object;
}
现在如果我在 main 中创建:
Object obj = generate("Dog");
如何调用 Dog 类中的方法?我必须将其转换为 Dog 吗?如果我必须投射它,它不会失去通过这种方法生成它的目的吗?再次感谢。
【问题讨论】:
-
你想在更高的层次上实现什么?为什么一个对 Java 和程序内部一无所知的最终用户会输入 Java 类名?
-
它的任务。
-
@user2991108 你需要给我们一个任务的描述,否则我们不能再帮你了。如果你能证明这个问题与被标记为重复的问题不同,那么我将重新投票。