java - 如果类存在,则调用构造函数

标签 java class methods alias

我有这个 Java 代码片段:

try {
    Class.forName(command);
} catch (ClassNotFoundException ex) {    
}

其中“command”是在运行时手动输入的字符串。为了解决这个问题,我们假设用户输入“Foo”。

它检查是否存在名为 Foo 的类。检查后我想做的事情是从 Foo 调用一个方法。

Foo.execute();

如何在不为每个类创建特殊的“if”情况的情况下做到这一点?有没有办法使用别名 ($command).execute() 之类的东西,其中 $command 将是(在本例中)我的 Foo 类?

最佳答案

对于任何您希望能够从名称执行的类,我的第一直觉是让每个类实现一个通用接口(interface)。

示例:

public Interface InputClazz {
    public void execute();
}

public class Foo implements InputClazz {
  public void execute() {
    //do Stuff
  }
}

public class Bar implements InputClazz {
  public void execute() {
    //do Stuff
  }
}

如何调用:

try {
    Class clazz = Class.forName(command);
    InputClazz input = (InputClazz) clazz.newInstance();
    input.execute();
} catch (ClassNotFoundException ex) {    
}

然后您可以输入 Foo 或 Bar,代码将运行该类的具体执行方法。

关于java - 如果类存在,则调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835480/

相关文章:

java - 如何正确调用方法

C++类继承问题

ruby - 如何在模块定义之外访问 Module.nesting 的返回

java - 重置android数据库中的行数计数

java - 如何限制对 Eclipse Java 项目中的包的访问

Java 绑定(bind)与手动定义类

python - 如何在 python 中创建不可变字典?

java - 传递的是整数,但预期是 Char 值?

java - 使用带有扩展名的自动值时,AutoValue : Missing required properties,

java - Java项目的自动分发