Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果所有对象都返回false,如何触发某些内容_Java_Oop - Fatal编程技术网

Java 如果所有对象都返回false,如何触发某些内容

Java 如果所有对象都返回false,如何触发某些内容,java,oop,Java,Oop,可能会有类似的问题出现,但我不知道我要找的确切词语 我有一个名为Command package loopturn.loanbot.main; 导入net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; 导入net.dv8tion.jda.api.hooks.ListenerAdapter; 公共类命令扩展ListenerAdapter实现CommandInterface{ 私有字符串命令; 私人命令执行人; 公共命令

可能会有类似的问题出现,但我不知道我要找的确切词语

我有一个名为
Command

package loopturn.loanbot.main;
导入net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
导入net.dv8tion.jda.api.hooks.ListenerAdapter;
公共类命令扩展ListenerAdapter实现CommandInterface{
私有字符串命令;
私人命令执行人;
公共命令(字符串命令、命令执行器){
this.command=命令;
this.executor=执行人;
}
公共布尔onCommand(){
返回null;
}
已接收公共无效OnGuildMessage(GuildMessageReceivedEvent事件){
字符串[]messageSplitBySpace=event.getMessage().getContentRaw().split(“”);
if(messageSplitBySpace[0].startsWith(“!”){
if(messageSplitBySpace[0].equalsIgnoreCase(“!”+命令)){
执行人onCall(事件);
}
}
}
}
我为每个命令创建一个新命令。看起来很简单,对吧。那么,当一个命令运行但不存在时(一个命令通过发送一条以“
”!“
”开头的消息开始),它告诉他们它不存在,我该怎么做呢

Command c = CommandFactory.discover(event)
c.execute()


我有一个想法,创建另一个类,接受命令,然后在聊天时调用命令,但感觉这不是正确的解决方案。我想看看是否有人能想出更好的方法来做这件事。

您可以拥有一个查找表,并在未找到命令时返回默认值

execute( String command ) { 
    Command c = map.get(command)
    if (c = null) {
       c = new EmptyCommand()
    }
    c.run();
}

这样,如果找到命令,就执行它,如果没有,就执行一个不做任何事情的
EmptyCommand
(或者在您的情况下,向用户显示“Invalid command”消息或类似消息)。

我建议创建一个独立的工厂,用于根据
事件.getMessage()
发现命令。当事件包含“!”时,此工厂将生成一个特殊命令,称为“NaNCommand”。在这个命令上,您可以处理调用不存在的命令的所有情况

Command c = CommandFactory.discover(event)
c.execute()


目标不是什么都不做;“当命令运行但不存在时……它会告诉他们它不存在。”