我创建了两个包含类似
的包pakage1.class.files
|- ClassA;
|- ClassB;
pakage2.class.files
|- ClassC;
但我想按如下方式调用代码
public class ClassC
{
public void method1()
{
pakage1.class.files.ClassA var1 = new pakage1.class.files.ClassA();
}
}
但是我希望将“pakage1.class.files.ClassA”作为变量传递给
public class ClassC
{
public string CL1 = "pakage1.class.files.ClassA";
public void method1()
{
CL1 var1 = new CL1();
}
}
请帮助我......
答案 0 :(得分:1)
不,你不能这样做。必须在编译时知道变量类型。
您可以使用:
Class<?> clazz = Class.forName(className);
Object object = clazz.newInstance();
...但当然你必须使用反射来获得任何成员。您将不会拥有该类型的变量 。
编辑:当然,您不需要在代码中的任何位置拥有完全限定名称。您可以使用import
语句:
// Please don't include "class" as part of your package name...
import package1.class.files.ClassA;
public class ClassC {
public void method1() {
ClassA var1 = new ClassA();
}
}
......这当然不是一回事......但无论如何它都可以帮助你。
答案 1 :(得分:0)
CL1 var1 = new CL1();
这是java中的错误。 CL1是变量的标识符,而不是数据类型,因此在创建变量时不能将CL1用作类型。