为啥 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() 对我不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥交换功能对我不起作用? [复制]

为啥 BlockInput 对我不起作用?我忘了啥吗?

为啥 '@drop' 事件在 vue 中对我不起作用?

为啥灯箱 jQuery 插件对我不起作用?

为啥发布到 PayPal 沙盒 API 对我不起作用?

为啥 webpack 代码拆分对我不起作用?