通过变量声明包类 - java

时间:2012-09-02 08:01:47

标签: java methods package

我创建了两个包含类似

的包
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();
    }
}

请帮助我......

2 个答案:

答案 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用作类型。