类型嵌套类型CubeRanks无法隐藏封闭类型

时间:2013-08-09 19:34:00

标签: java plugins

我的java插件有问题。 这是我以前从未有过的。正常,一切都很好。

以下是代码:

package me.brian.CubeRanks;

import me.brian.CubeRanks.CubeRanks;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;


public class CubeRanks {

    public class CubeRanks extends JavaPlugin {

        public static CubeRanks plugin;
        public final Logger log = Logger.getLogger("Minecraft");
        public boolean enabled = false;
        public final PlayerListener pl = new PlayerListener(this);
        public final ArrayList<Player> OreHunterUsers = new ArrayList<Player>();
        public String cr = "[CubeRanks] ";


        @Override
        public void onEnable() {
            log.info(cr + "is now enabled.");   
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvents(pl, this);

        }

        @Override
        public void onDisable() {
            log.info(cr + "is now disabled.");
        }

        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
            if(commandLabel.equalsIgnoreCase("CubeRanks")) {
                if(args.length==0) {
                    if(!enabled) {
                        enabled = true;
                        ((Player) sender).sendMessage(ChatColor.GREEN + cr + "is now enabled");
                    }
                    else {
                        enabled = false;
                        ((Player) sender).sendMessage(ChatColor.RED + cr + "is now disbaled");
                    }
                }
            }
            return false;
        }
    }
}

有人能看到什么错误吗?

整个错误代码:

描述资源路径位置类型 嵌套类型CubeRanks无法隐藏封闭类型CubeRanks.java / CubeRanks / src / me / brian / CubeRanks第16行Java问题

错误照片:This is the error

1 个答案:

答案 0 :(得分:0)

你有一个包含同名类的类。我不确定你为什么要拥有那个外部CubeRanks类,但要么摆脱外部的一个,要么重命名其中一个。

public class CubeRanks { // remove or rename

    public class CubeRanks extends JavaPlugin { // or rename this
        ...
    }

}

从语法上讲,你不能拥有一个与其外部类同名的内部类的原因是为了消除以下歧义:

public class Ambiguous {
    public class Ambiguous {
        Ambiguous a; // <-- which type is Ambiguous referring to here?
    } 
}

您可能会争辩说最新的封闭类型名称可能优先,但那么您将如何引用外部类型?虽然理论上有方法围绕所有这些设计一种语言,但更容易让它不允许。