为什么Class.forName()对我不起作用?

时间:2009-02-19 11:50:41

标签: java class instantiation classname

我正在尝试从变量中实例化一个类,并编写了一些测试代码。但是,不幸的是,它无法正常工作。这是代码:

Object co1 = new CommandDownloadHttp();
Class cc1 = Class.forName("CommandDownloadHttp");
Object co = cc1.newInstance();

不幸的是,在第二行,它与java.lang.ClassNotFoundException崩溃。

你能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:7)

CommandDownloadHttp是该类的完整名称,即它没有包吗?如果 有包,请包含:

Class.forName("foo.bar.CommandDownloadHttp");

(我假设你有更好的理由在实际代码中执行此操作,顺便说一下 - 显然在这种情况下你实际上并不需要通过反射获取类:)

答案 1 :(得分:3)

你的班级在一个包里吗?这个包是进口的吗?所以它在第1行中有效。但是你需要Class.forName中的完全限定名(“my.package.to.CommandDownloadHttp”)。