0

我创建了 2 个包含类的包,例如

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

请帮助我...

4

2 回答 2

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

......当然,这不是一回事......但无论如何它可能会对你有所帮助。

于 2012-09-02T08:05:39.300 回答
0
CL1 var1 = new CL1(); 

这是java中的错误。CL1 是变量的标识符,而不是数据类型,因此在创建变量时不能使用 CL1 作为类型。

于 2012-09-02T08:13:31.627 回答