0

我只是在测试动态类负载并且正在这样做:

package P1;
public class Class1
{
    public static void main(String[] args)
    {
         Bird myBird = null;
         String myClassName = "P2.Bird";
         Class x = Class.forName(myClassName);
         myBird = (Bird)x.newInstance();
    }
}

Bird是来自 的类package P2,并且Class1来自P1。我应该在代码中添加什么以使其工作,因为该String myClassName...行显示错误(找不到类)。Bird我搬进来后尝试了相同的代码package P1,即使那样它也不起作用。

相关问题:为什么有人会使用动态类加载,它有什么优势吗?仅使用“new”运算符进行静态类加载要简单得多(至少对我而言),在这种情况下,我知道如何从不同的包中引用该类。非常感谢!

4

2 回答 2

1

您的 Bird 类提供了一个没有参数的默认公共构造函数?

动态类加载可能很有用,例如指定要在配置文件中使用的类(如果您曾经使用过 log4j 或其他允许将您自己的实现用于其中一个接口的库,您会遇到这种情况)。在这种情况下,库不知道您将使用哪个类,并且您不必编写代码来初始化库(这将是动态类加载的替代方案,但不太方便)

于 2013-01-30T14:58:28.080 回答
1

对于第一个问题的答案,请尝试提及完整的包名称。我已经尝试过了,它有效

于 2013-01-30T15:01:33.957 回答