java - 无法注册类(class)

标签 java hashmap

我在将类文件放入 HashMap 时遇到问题。

我正在尝试创建一个将注册命令的类(以便稍后使用它们)

public class CommandRegister {

    static HashMap<String, ICommand> commands = new HashMap<String, ICommand>();

    public static void addCommand(ICommand c){
        commands.put(c.getName(), c);
    }
}

这是我创建的接口(interface)(ICommand)

public interface ICommand {
    public String getName();
    public void run(Event ev);
}

和一个命令类

public class Help implements ICommand{

    @Override
    public String getName() {
        return "help";
    }

    @Override
    public void run(Event ev) {
        return;
    }
}

如果我现在在我的主类中运行此代码,它将无法工作。

public class Main {

    public static void main(String[] args){
        registerCommand();
    }

    private static void registerCommand() {
        CommandRegister.addCommand(Help);
    }
}

最佳答案

您需要使用“new”运算符创建一个 Help 实例:

public class Main {

    public static void main(String[] args){
        registerCommand();
    }

    private static void registerCommand() {
        CommandRegister.addCommand(new Help());
    }
}

关于java - 无法注册类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41074958/

相关文章:

java - 我如何实现文件扫描器的多线程场景?

java - 是否有一种实用的方法来确定正在使用哪些 JCE 加密提供程序?

java - JTree For 循环数组语法

java - HashMap 的键值错误

java - 通过 Java 中的键聚合文件中的键值行

java - 在 HashMap 中显示键值

Java 泛型 : Array containing generics

java - Jersey - 在运行一组选定的子资源之前执行 'common' 代码

java - 根据键名从 HashMap 获取字符串值

python - Python dicts 如何保持按键顺序