Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用varibales调用构造函数而不引用Java中的显式类类型?_Java_Variables_Constructor_Call - Fatal编程技术网

使用varibales调用构造函数而不引用Java中的显式类类型?

使用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();

是否有可能使用变量来实例类,而不显式调用对象的类类型

例如,我们有一个类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();

     //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”
就可以使用反射或泛型在这些方面做一些事情,但在我提出任何建议之前,我需要更多关于您尝试做什么以及为什么要做的细节。我认为您在这里有一个经典。