使用varibales调用构造函数而不引用Java中的显式类类型?
是否有可能使用变量来实例类,而不显式调用对象的类类型 例如,我们有一个类cat和一个表示字符串cat的字符串。是否可以在代码中像下面这样或类似地调用cat类使用varibales调用构造函数而不引用Java中的显式类类型?,java,variables,constructor,call,Java,Variables,Constructor,Call,是否有可能使用变量来实例类,而不显式调用对象的类类型 例如,我们有一个类cat和一个表示字符串cat的字符串。是否可以在代码中像下面这样或类似地调用cat类 public class MyMainClass { public static void main(String[] args) { String name="cat"; //normal methode of instancing the class Cat: Cat cat=new Cat();
public class MyMainClass {
public static void main(String[] args) {
String name="cat";
//normal methode of instancing the class Cat:
Cat cat=new Cat();
//my method
name cat=new name(); // because name="cat" this should be Cat cat=new Cat();
}
}
class Cat{
// whatsoever
}
使用反射:
String nameString = "com.example.Test";
Class name = Class.forName(nameString);
Object instance = name.newInstance();
Test test; // Defined if is instanceof Test
if(instance instanceof Test) {
// Yeah! now you can do this: test = (Test)instance; and something else...
}
注意:您必须在字符串中输入整个包名。您可以使用反射:
String name = "com.foo.Cat"; // Note fully qualified name
Object object = Class.forName(name).newInstance();
但除非使用instanceof
,否则您将不知道自己的类型
而
name
的值不能用于创建该名称的变量。您的用例是什么?String name=new String(“cat”)代码>是一种浪费。只要做String name=“cat”
就可以使用反射或泛型在这些方面做一些事情,但在我提出任何建议之前,我需要更多关于您尝试做什么以及为什么要做的细节。我认为您在这里有一个经典。