为啥 Class.forName() 对我不起作用?
Posted
技术标签:
【中文标题】为啥 Class.forName() 对我不起作用?【英文标题】:Why does Class.forName() not work for me?为什么 Class.forName() 对我不起作用? 【发布时间】:2010-10-08 13:46:32 【问题描述】:我正在尝试从变量实例化一个类,并编写了一些测试代码。但是,不幸的是,它不起作用。代码如下:
Object co1 = new CommandDownloadHttp();
Class cc1 = Class.forName("CommandDownloadHttp");
Object co = cc1.newInstance();
不幸的是,它在第二行与java.lang.ClassNotFoundException
崩溃。
你能告诉我我做错了什么吗?
【问题讨论】:
【参考方案1】:CommandDownloadHttp 是类的完整名称吗,即它没有包?如果它确实有一个包,包括:
Class.forName("foo.bar.CommandDownloadHttp");
(我认为您在真实代码中这样做有更好的理由,顺便说一句 - 显然,在这种情况下,您实际上不需要通过反射来获取类 :)
【讨论】:
用包替换命名空间(以 java 为中心)。我意识到它们是同一个概念。 谢谢! :) 是的,这些行只是示例。在现实生活中,名称将在执行时构建。【参考方案2】:你的班级在一个包里吗?这个包是进口的吗?所以它在第 1 行有效。但是您需要 Class.forName("my.package.to.CommandDownloadHttp") 中的完整限定名。
【讨论】:
感谢您的回答。我没想过包。以上是关于为啥 Class.forName() 对我不起作用?的主要内容,如果未能解决你的问题,请参考以下文章