为什么它说我的返回语句“无法访问”

问题描述

我正在为一个学校项目开发一个非常简单的 minecraft 插件,但我似乎无法“访问”这个 return false;

我使用的是 Eclipse IDE,这是我的代码

package com.genuishour.me;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class Events implements CommandExecutor{
    
    private Main plugin;
    
    public Events(Main plugin) {
        this.plugin = plugin;
        
    plugin.getCommand("hello").setExecutor(this);
        
    }
    
    @Override
    public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only players can execute this command!");
            return true;
            
            
        }
        
        Player p = (Player) sender;
        
        String name = sender.getName();
        
        if (p.hasPermission("hello.use")) {
            p.sendMessage("Hello " + name + "!");
            return true;
            } else {
                p.sendMessage("You do not have permission to execute this command");
                return true;
            }
        
        return false; //unreachable code
    }       
    

}

解决方法

你有一个“悬挂的其他”——这两个是等价的:

if (p.hasPermission("hello.use")) {
    p.sendMessage("Hello " + name + "!");
    return true;
} else {
    p.sendMessage("You do not have permission to execute this command");
    return true;
}
   
return false; //unreachable code

if (p.hasPermission("hello.use")) {
    p.sendMessage("Hello " + name + "!");
    return true;
}
p.sendMessage("You do not have permission to execute this command");
return true;
   
return false; //unreachable code

这应该清楚为什么最后一个无法访问

,

因为这里:

if (p.hasPermission("hello.use")) {
            p.sendMessage("Hello " + name + "!");
            return true;
            } else {
                p.sendMessage("You do not have permission to execute this command");
                return true;
            }

无论 p.hasPermission("hello.use") 的结果是什么,您将始终通过返回 true 退出代码。

,

根据您缩进代码的方式,我猜您希望最后一个 return false 是函数中的最后一个语句。但现在它位于 (p.hasPermission("hello.use")) {

总而言之:将其向下移动一行,它位于函数的末尾。