java - 使用反射在 Java 中实例化一个类

标签 java eclipse

我正在尝试创建一个方法,该方法将根据给定接口(interface)实例化一个类。目前我正在尝试根据类名实例化一个类,但我不断收到 ClassNotFoundException

谁能告诉我我做错了什么?

public class Message implements IExample{
    @Override
    public String showMessage() {
        return "merge";
    }
}

public static void main(String[] args) throws Exception{
    Object mess = Class.forName("Message").newInstance();
}

编辑

我试过了:

Object mess = Class.forName("com.MyExample.Message").newInstance();
Object mess = Class.forName("Project.MyExample.Message").newInstance();
Object mess = Class.forName("MyExample.Message").newInstance();

它们都抛出 ClassNotFoundException 和一个窗口,该窗口告诉我“找不到源”,并带有一个按钮(编辑源查找路径..)让我浏览文档。

主类和Message类都在名为“Project”的项目和名为MyExample的包中

最佳答案

您需要将完全限定的类名指定为 Class.forName(String) .

Parameters: className the fully qualified name of the desired class.

如果 Message 在包 com.package 中,那将是 com.package.Message

Object mess = Class.forName("com.package.Message").newInstance();

启动应用程序时,该类必须位于类路径中。

关于java - 使用反射在 Java 中实例化一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18469948/

相关文章:

java - 关于为什么一件事有效以及为什么我以前的方法不起作用,我是否正确? (关于线程)

eclipse - 如何使零件在 PartStack 中可移动

java - 如何使用java将cron表达式转换为json格式

java - Console() 运行时错误

java - 字符串子串索引可以是字符串的长度

java - java中用于非轴对齐框的简单快速碰撞算法

eclipse - 如何停止 Eclipse 重建工作区?

java - Hibernate 重写多对多条目?

Java 程序接受输入单词并输出在导入的 .txt 文件中找到的任何字谜?

java - AndEngine - Sprite 留在屏幕上......有时