【问题标题】:What is @SuppressWarnings("deprecation") and how do I fix it?什么是@SuppressWarnings("deprecation"),我该如何解决?
【发布时间】:2014-12-05 22:02:47
【问题描述】:

我正在关注 YouTube 教程,但遇到了这个错误。

在这一行,@SuppressWarnings("deprecation") 出现。

Player targerPlayer = Bukkit.getServer().getPlayer(args[0]);

这是我的简单治疗插件。

package me.roofer.youtube;

import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;

public class youtube extends JavaPlugin {
    public static Logger logger = Logger.getLogger("Minecraft");   
    public static youtube plugin;

    @Override
    public void onDisable() {
        PluginDescriptionFile pdfFile = this.getDescription();
        youtube.logger.info(pdfFile.getName() + " has been disabled!");
    }
    @Override
    public void onEnable() {
        PluginDescriptionFile pdfFile = this.getDescription();
        youtube.logger.info(pdfFile.getName() + " Version" + pdfFile.getVersion() + " has been Enabled!");

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
        @SuppressWarnings("unused")
        Player player = (Player) sender;
        if(commandLabel.equalsIgnoreCase("heal") || commandLabel.equalsIgnoreCase("h")) {
            // heal >> 0 args | heal roofer777 >> 1 arg
            if (args.length == 0){
                player.setHealth(20);
                player.sendMessage(ChatColor.RED + "Healed!");
            }else if(args.length == 1){
                @SuppressWarnings({"unused", "deprecation"})
                Player targerPlayer = Bukkit.getServer().getPlayer(args[0]);
                targetPlayer.setHealth(20);
            }
        }
        return false;
    }
}

【问题讨论】:

  • 这意味着您不应该使用已弃用的方法,并且 IDE 告诉您 Java 有更好的程序替代方案

标签: java bukkit suppress-warnings


【解决方案1】:

这不是错误。 你应该阅读the definition of deprecation

注解@Deprecated 的程序元素是不鼓励程序员使用的,通常是因为它很危险,或者因为存在更好的替代方案。当在非弃用代码中使用或覆盖弃用程序元素时,编译器会发出警告。

不推荐使用该特定方法的原因是因为 Bukkit 现在正在迁移到新的 UUID 系统,因此使用名称并不是获取 Player 对象的最佳方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2019-01-14
    相关资源
    最近更新 更多