Java中的动态类加载 - 引用类

时间:2013-01-30 14:47:37

标签: java eclipse

我只是测试动态类加载并且正在执行此操作:

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"更简单(至少对我来说乍一看)。用于静态类加载的运算符,在这种情况下,我知道如何从不同的包中引用该类。非常感谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

对于第一个问题的答案,请尝试提及完整的包名称。我已经尝试了它并且它可以工作